我正在寻找有关 SQL Server 日志文件的一些清晰信息。我有一个较大的数据库(2GB),最近由于某种原因没有备份。数据库的日志文件增长到大约 11GB,据我了解,这是数据库中发生的所有事务和语句。
我的问题:
是什么导致数据库日志文件被刷新?“冲洗”实际上是什么意思?对大型日志文件执行文件收缩或数据库收缩的后果是什么?
我正在寻找有关 SQL Server 日志文件的一些清晰信息。我有一个较大的数据库(2GB),最近由于某种原因没有备份。数据库的日志文件增长到大约 11GB,据我了解,这是数据库中发生的所有事务和语句。
我的问题:
是什么导致数据库日志文件被刷新?“冲洗”实际上是什么意思?对大型日志文件执行文件收缩或数据库收缩的后果是什么?
备份事务日志后,这些事务将从日志中截断,但不会自动恢复操作使用的空间。如果您正在执行定期事务日志备份,这可能是一件好事。假设该空间用于交易并且将来会再次被需要。不断缩小事务日志可能不利于性能,因为当再次需要时,数据库将需要扩展日志。
因此,要解决您的问题,请先进行完整备份和事务日志备份。您无需进入简单模式或单用户模式。然后收缩数据库并每隔几个小时设置一次事务日志备份。在我的服务器上,我每 10 分钟执行一次,但这完全取决于人们对其环境的需求频率。监控日志大小如何变化,确保留出足够的空间,使其不必定期扩展,再加上一些额外的乐趣。
当您收缩数据库时,请使用DBCC SHRINKFILE而不是DBCC SHRINKDATABASE,因为后者将收缩整个数据库,而不仅仅是日志文件。此外,您对回收的空间量也没有太多控制权。
备份通常会清除事务日志。事务日志保留自上次备份以来的所有更改。根据您备份数据库的方式,您可能根本不需要保留完整的事务日志。如果您使用的是 MS SQL2000/MS SQL2005,将恢复模式设置为简单会删除事务日志。
一旦你确定你有一个干净的数据库副本(没有丢失的风险),删除事务日志是安全的。有一些 SQL 命令可以做到这一点,但我通常将恢复模式更改为简单,然后缩小数据库,然后在必要时将恢复模式设置回完全。
如果您需要更多信息,请包括您正在使用的 SQL 版本以及如何执行备份,我会看看是否可以详细说明您的特定设置。
实际上,我不相信备份数据库会缩小日志,备份事务日志本身会缩小日志。SQL Server 对两者进行了区分。
通常,我要么让所有数据库“简单”恢复,要么让备份事务日志成为我定期维护计划的一部分(通常每周一次)。