SQL Server 日志文件混淆

Posted

技术标签:

【中文标题】SQL Server 日志文件混淆【英文标题】:SQL Server Log File Confusion 【发布时间】:2009-01-17 19:22:47 【问题描述】:

我正在寻找有关 SQL Server 日志文件的清晰信息。我有一个较大的数据库(2GB),最近由于某种原因没有备份。数据库的日志文件增长到 11GB 左右,据我了解,这是数据库中发生的所有事务和语句。

我的问题:

是什么导致数据库日志文件被刷新? “冲洗”实际上是什么意思? 对大型日志文件执行文件收缩或数据库收缩会有什么后果?

【问题讨论】:

【参考方案1】:

备份事务日志后,这些事务会从日志中截断,但操作使用的空间不会自动恢复。如果您正在执行定期事务日志备份,这可能是一件好事。假设该空间用于交易并且将来会再次被需要。不断缩小事务日志可能不利于性能,因为当再次需要时,数据库将需要扩展日志。

因此,要解决您的问题,请先进行完整备份和事务日志备份。您无需进入简单模式或单用户模式。然后收缩数据库并每隔几个小时设置一次事务日志备份。在我的服务器上,我每 10 分钟执行一次,但这完全取决于人们对其环境的需求频率。监控日志大小如何变化,确保留出足够的空间,使其不必定期扩展,再加上一些额外的乐趣。

当你收缩数据库时,使用DBCC SHRINKFILE 而不是DBCC SHRINKDATABASE,因为后者会收缩整个数据库,而不仅仅是日志文件。此外,您无法控制回收多少空间。

【讨论】:

【参考方案2】:

备份通常会清除事务日志。事务日志保留自上次备份以来的所有更改。根据您备份数据库的方式,您可能根本不需要保留完整的事务日志。如果您使用的是 MS SQL2000/MS SQL2005,将恢复模式设置为 Simple 会删除事务日志。

一旦您确定您拥有一个干净的数据库副本(没有丢失的风险),就可以安全地删除事务日志。有一些 SQL 命令可以执行此操作,但我通常将恢复模式更改为 Simple,然后缩小数据库,然后在必要时将恢复模式设置回 Full

如果您需要更多信息,请提供您正在使用的 SQL 版本以及如何执行备份,我会看看是否可以详细说明您的具体设置。

【讨论】:

【参考方案3】:

实际上,我不认为备份数据库会缩小日志,备份事务日志本身会缩小日志。 SQL Server 对两者进行了区分。

通常,我要么让所有数据库“简单”恢复,要么将备份事务日志作为我定期维护计划的一部分(通常每周一次)。

【讨论】:

以上是关于SQL Server 日志文件混淆的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008怎么查看日志文件

sql server 2008 r2 日志文件过大怎么清除

SQL Server 快速清除日志文件的方法

sql server运行中,是不是能删除主数据库事务日志文件

sql server 2008 日志文件已经到了最大值,还会记录日志吗

SQL Server 2008 收缩日志 清空删除大日志文件