2009-01-17 74 views
4

我正在寻找一些SQL Server日志文件的清晰度。我有一个很大的数据库(2GB),最近因为任何原因没有备份。数据库的日志文件增长到11GB左右,据我了解,这是数据库中发生的所有事务和声明。SQL Server日志文件混淆

我的问题:

是什么导致数据库日志文件被刷新? “冲水”究竟意味着什么? 在大型日志文件上执行文件缩小或数据库收缩会有什么后果?

回答

9

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

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

收缩数据库时使用DBCC SHRINKFILE而不是DBCC SHRINKDATABASE,因为后者会缩小整个数据库,而不仅仅是日志文件。你也没有太多的控制空间被恢复的空间。

3

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

一旦确定拥有数据库的干净副本(没有丢失风险),删除事务日志是安全的。有一些SQL命令可以这样做,但我通常会将恢复模式更改为简单然后缩小数据库,然后将恢复模式设置回完整(如有必要)。

如果您需要更多信息,请包括您正在使用的SQL版本以及执行备份的方式,我会看看是否可以详细说明您的特定设置。

2

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

通常,我将使所有数据库“简单”恢复,或使备份交易日志成为我定期维护计划的一部分(通常每周一次)。