我正在尝试管理SQL Server 2008日志文件的大小。我有一个每天加载一次的报告数据库。简单恢复模型是最合适的,因为除了早上加载之外没有其他事务,我可以重新创建这些记录。我的目标是让事务日志具有固定的大小,足够大,以便在加载期间不必分配新的空间。
我的问题是日志不断增长。我知道日志应该被标记为可重用,但为什么日志会不断增长? log_reuse_wait_desc显示“Nothing”。
我可以将日志文件缩小到1 MB,因此我知道其中没有任何事务。我可以设置一个工作来做这件事,但我宁愿把日志保留在500MB,这足以处理每日负载。如果我这样做,日志就会增长。
如何将日志保持在一致的大小?
请注意:缩小日志文件无法解决此问题。我知道该怎么做。我正试图在事务日志中找到一种方法来重用。
答案 0 :(得分:25)
日志文件用于事务目的,即使数据库处于SIMPLE RECOVERY MODE中也是如此。如果LOG大小确实超过500 MB,那么有人正在运行需要该空间的查询或存储过程。
例如,您可能正在针对报表创建索引。这将在事务内部完成,以便在发生错误时可以回滚更改。但是,一旦完成其他事务,之后将释放已用空间。
因此,如果日志大小从1MB开始并且增加到700MB,那么正在做一些需要该空间的事情。如果将大小锁定为500MB,则最终会收到“日志文件空间不足”错误。
但如果您真的想以500MB修复它,您可以执行以下操作: (我正在使用SQL Server 2005)
注意:您还可以在“自动增长部分”中设置最大日志文件大小。
或者,您可以使用以下脚本进行更改。用适当的值替换DATABASENAME。如果需要,还要更改日志文件名。
USE [master]
GO
ALTER DATABASE [DatabaseName] MODIFY FILE ( NAME = N'DATABASENAME_Log', SIZE = 512000KB , FILEGROWTH = 0)
GO
答案 1 :(得分:4)
创建一个备份数据库并收缩日志的维护作业
答案 2 :(得分:3)
答案 3 :(得分:0)
在我的头顶,你可以使用DBCC SHRINKFILE来做到这一点。