Microsoft 2008 (SP3) - 10.0.5500.0 (X64) Web (64位)在WindowsNT6.1上(Build 7601: Service 1)
我有一个在线的ASPState数据库,它的日志文件ASPState_log正在极大地增长。目前的尺寸是536 is。
如何维护这个日志文件?
我每天通过SQL代理作业进行备份。我能把日志截短吗?
控制日志文件大小的最佳实践是什么?
发布于 2012-12-04 19:21:32
我每天通过SQL代理作业进行备份。我能把日志截短吗?
你在做什么备份?听起来你只是在做完全/差别化备份。如果数据库处于完全恢复状态,则还需要使用日志备份备份事务日志。
如果您使用的是完整的恢复模型(或公牛日志记录),那么您有两个选项中的一个:
如果你需要及时恢复,那么你应该保持完全恢复.但是,在备份日志之前,日志的一部分是无法重用的。它与日志链有关,并确保它不被破坏。
注意:即使备份事务日志,也不会注意到文件大小下降。如果需要恢复该空间,则需要显式地缩小文件。数据库文件收缩不应该是例行操作。
发布于 2012-12-04 20:25:46
您的数据库被设置为完整的恢复模型,并且很可能不会进行事务日志备份。如果您不需要时间点恢复(这意味着只能恢复到备份所用的点),那么运行此命令将DB设置为简单模式。简单模式不保留旧的事务历史记录,并将事务的旧的无效部分标记为可重用。Mark指出这个DB不需要时间点恢复,所以让我们使用这个选项。
此DB的
USE [master]
GO
ALTER DATABASE [DBName] SET RECOVERY SIMPLE WITH NO_WAIT
GO请注意,在执行此操作时,打开的事务可能会被回滚。
执行一个DBCC LOGINFO并注意返回了多少行。这是你的VLF计数的号码。太多会导致备份/还原和一般日志活动的主要性能问题。你所有的备份都会是巨大的
然后,您需要调整事务日志的大小,以便它是一个批准的大小,并且没有VLF (内部)碎片。
USE [DBName]
GO
DBCC SHRINKFILE (N'DBName_log' , 1)
GO这将使您的事务日志缩小到当前最小的大小。请注意,这将导致性能问题。在重要或繁忙的时间,最好是在维护窗口期间,不要运行任何这些。如果你是一家24/7的商店,你总是可以试着把它缩小成小块。
现在阅读这篇关于VLFs的SQLSkills文章。Paul建议让您的事务日志增长一个星期,让它通过一个重新索引,并使其成为您的新大小。按照上面链接的金伯利的帖子来增长你的日志文件,你就是黄金。
Server为您提供了执行名为“时间点恢复”的操作的选项,这意味着它允许您恢复到特定的时间秒。为此,Server需要维护需要恢复的所有数据的“事务日志”。
例如,假设有人在12:53:12犯了一个很大的错误,这要求您从备份中恢复。如果你每晚备份一次,那么你就会失去午夜后输入的所有额外数据。你要确保你尽可能多地保持。您可以执行完全备份还原,然后将事务日志还原到12:53:11。
为了做到这一点,您需要开始定期进行事务日志备份。
这个职位在设置快速事务日志备份作业方面有一个很好的脚本。但是,如果您想使用SQL维护脚本中公认的通用标准,请查看Ola Hallegren的后援脚本。
如果你还有其他问题,请告诉我们。
https://dba.stackexchange.com/questions/29805
复制相似问题