SQL Server 压缩日志及数据库文件大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 压缩日志及数据库文件大小相关的知识,希望对你有一定的参考价值。
参考技术A请按步骤进行 未进行前面的步骤时 请不要做后面的步骤 以免损坏你的数据库
一般不建议做第 两步 第 步不安全 有可能损坏数据库或丢失数据 第 步如果日志达到上限 则以后的数据库处理会失败 在清理日志后才能恢复
清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
截断事务日志
BACKUP LOG 数据库名 WITH NO_LOG
收缩数据库文件(如果不压缩 数据库的文件不会减小
企业管理器 右键你要压缩的数据库 所有任务 收缩数据库 收缩文件
选择日志文件 在收缩方式里选择收缩至XXM 这里会给出一个允许收缩到的最小M数 直接输入这个数 确定就可以了
选择数据文件 在收缩方式里选择收缩至XXM 这里会给出一个允许收缩到的最小M数 直接输入这个数 确定就可以了
也可以用SQL语句来完成
收缩数据库
DBCC SHRINKDATABASE(客户资料)
收缩指定数据文件 是文件号 可以通过这个语句查询到:
select * from sysfiles
DBCC SHRINKFILE( )
为了最大化的缩小日志文件(如果是sql 这步只能在查询分析器中进行)
a 分离数据库:
企业管理器 服务器 数据库 右键 分离数据库
b 在我的电脑中删除LOG文件
c 附加数据库:
企业管理器 服务器 数据库 右键 附加数据库
此法将生成新的LOG 大小只有 多K
或用代码
下面的示例分离 pubs 然后将 pubs 中的一个文件附加到当前服务器
a 分离
EXEC sp_detach_db @dbname = pubs
b 删除日志文件
c 再附加
EXEC sp_attach_single_file_db @dbname = pubs
@physname = c:/Program Files/Microsoft
SQL Server/MSSQL/Data/pubs mdf
为了以后能自动收缩 做如下设置
企业管理器 服务器 右键数据库 属性 选项 选择 自动收缩
SQL语句设置方式:
EXEC sp_dboption 数据库名
autoshrink TRUE
如果想以后不让它日志增长得太大
企业管理器 服务器 右键数据库 属性 事务日志
将文件增长限制为xM(x是你允许的最大数据文件大小)
SQL语句的设置方式:
lishixinzhi/Article/program/SQLServer/201311/22266
SQL Server 2008 日志文件很大并且增长很快
【中文标题】SQL Server 2008 日志文件很大并且增长很快【英文标题】:SQL Server 2008 log file size is large and growing quickly 【发布时间】:2011-03-17 03:38:45 【问题描述】:大多数时候用户会访问数据库来阅读新闻。在事务下执行的查询数量很少。 95% 的数据库命中将用于只读目的。
我的数据库日志文件大小每天增长 1 GB。即使我缩小数据库,日志文件的大小也不会减少。越来越多的日志文件大小可能是什么原因?我该如何控制这个?根据我的知识,当我们从表中读取数据时,日志文件不会增加。
关于如何处理日志文件增长的任何建议?如何将其保持在可管理或合理的大小?这会以任何方式影响性能吗?
【问题讨论】:
您的恢复模式是什么?您是否在进行完整备份? 看似反复出现的问题...***.com/questions/3140259/log-file-size-is-huge***.com/questions/453858/… 【参考方案1】:日志文件大的主要原因是数据库中的批量事务。要减小日志文件大小,最好的选择是在一定时间间隔后进行事务日志备份。
【讨论】:
【参考方案2】:完整备份无济于事,您必须定期备份事务日志(以及常规数据库完整备份和差异备份)才能清空它。如果您没有备份日志并且您不是处于简单恢复模式,那么您的事务日志中包含自数据库设置以来的所有事务。如果您有足够的操作以使您每天增长一个演出,那么您可能还会有大量导入或更新同时影响许多记录。您可能需要处于不单独记录事务的简单恢复模式。但是,如果您有来自导入和用户的混合数据,请不要这样做。在这种情况下,您需要经常备份事务日志,以便能够将大小保持在可管理的时间点上。我们每 15 分钟备份一次事务日志。
阅读 BOL 中的事务日志备份,了解如何解决您现在遇到的问题。然后让您的备份设置并正常运行。在尝试修复之前,您需要彻底阅读并理解这些内容。现在,如果您的服务器出现故障并且您必须恢复数据库,您可能会受到伤害。事务日志备份对于能够从故障中正确恢复至关重要。
【讨论】:
【参考方案3】:有几件事需要考虑。您执行什么类型的备份,以及您需要什么类型的备份。如果您有这个问题的答案,您可以将恢复模式切换为简单模式或保持完整模式,但您需要每天进行增量备份(或任何让您对日志大小感到满意的方式)。
将您的数据库日志设置为简单(但前提是您对数据库进行完整备份!)。
-
右键单击您的数据库
选择属性
选择选项
将恢复模式设置为简单
如果您的备份计划是每天完全备份,这将是最好的。因为在这种情况下,您的日志不会被修剪,并且会飙升(就像您的情况一样)。
如果您将使用 Grandfather&Father&Son 备份技术,这意味着 每月完整备份、每周完整备份,然后是每 天增量备份。然后,您需要 完全恢复模式。如果每天 1GB 的日志仍然太多,您可以启用每小时或每 15 分钟的增量备份。这应该可以解决日志越来越多的问题。
如果您每天都运行完整备份,则可以将其切换到简单恢复模式,并且您应该没问题而不会给您的数据带来风险(如果您离开时可能会丢失 1 天的数据)。如果您打算使用增量,请将其保留在 Recovery Mode Full。
【讨论】:
【参考方案4】:您是否经常备份数据库?您需要执行完整和/或事务日志备份,以便 SQL Server 考虑缩小您的日志文件。
【讨论】:
以上是关于SQL Server 压缩日志及数据库文件大小的主要内容,如果未能解决你的问题,请参考以下文章