我已经阅读了其他帖子,并且已经完成了数小时的研究,但仍然没有更聪明。 我在数据文件中有一个65 gig的数据库,目前在日志文件中有230 gig。我正在尝试重新设计数据库,因此它更有效但是在进行架构更改时,日志文件会尝试变得太大而且窗口会突然显示磁盘空间不足。
我试图收缩文件,它的最低值是~220 gig。使用DBCC OPENTRAN我可以看到没有活动的事务。使用select * FROM sys.dm_tran_database_transactions我可以看到没有任何有趣的事情发生。
我对我所读到的内容的解释是,如果存在活动事务,则日志文件应该很大,并且一旦提交了所有事务,该文件应该能够缩小到理论上非常小的东西。正确?
我尝试使用truncate_only备份日志,然后使用dbcc shrinkfile(dbname,2)
如何将此文件缩小为更易于管理的内容?
答案 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