SQL Server 2005事务日志总是太大

时间:2010-02-03 10:37:07

标签: sql-server-2005 transaction-log

我已经阅读了其他帖子,并且已经完成了数小时的研究,但仍然没有更聪明。 我在数据文件中有一个65 gig的数据库,目前在日志文件中有230 gig。我正在尝试重新设计数据库,因此它更有效但是在进行架构更改时,日志文件会尝试变得太大而且窗口会突然显示磁盘空间不足。

我试图收缩文件,它的最低值是~220 gig。使用DBCC OPENTRAN我可以看到没有活动的事务。使用select * FROM sys.dm_tran_database_transactions我可以看到没有任何有趣的事情发生。

我对我所读到的内容的解释是,如果存在活动事务,则日志文件应该很大,并且一旦提交了所有事务,该文件应该能够缩小到理论上非常小的东西。正确?

我尝试使用truncate_only备份日志,然后使用dbcc shrinkfile(dbname,2)

如何将此文件缩小为更易于管理的内容?

1 个答案:

答案 0 :(得分:2)

您是否阅读过Kimberly Tripp的文章? (几乎是关于这个主题的规范参考):8 Steps to better Transaction Log throughput

您可能遇到了VLF碎片:Transaction Log VLFs - too many or too few?。运行此命令以查找:

DBCC LOGINFO;

您是否按照此标准程序缩小了日志:

1)备份您的交易日志(即使您处于简单模式)以清除所有活动。

BACKUP LOG [MyDB] 
TO DISK = N'E:\db.bak' 
GO 

2)缩小事务日志。

USE [MyDB]
GO

DBCC SHRINKFILE ('MyDB_Log', TRUNCATEONLY)
GO

3)修改事务日志的大小并配置自动增长:

USE [MyDB]
GO

ALTER DATABASE [MyDB] 
    MODIFY FILE ( NAME = N'MyDB_Log', SIZE = 1024000KB, FILEGROWTH = 1024000KB)
GO