2

我已经阅读了其他帖子并进行了数小时的研究,但仍然没有更聪明。我有一个数据库,数据文件中有 65 gig,当前日志文件中有 230 gig。我正在尝试重新设计数据库以提高效率,但是在进行架构更改时,日志文件会尝试变得太大,并且 Windows 会抱怨磁盘空间不足。

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

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

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

我该怎么做才能将此文件缩小到更易于管理的内容?

4

1 回答 1

2

你读过 Kimberly Tripp 的文章吗?(几乎是关于该主题的规范参考):提高事务日志吞吐量的 8 个步骤

您可能会遇到 VLF 碎片:事务日志 VLF - 太多或太少?. 运行此命令以找出:

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 
于 2010-02-03T10:58:42.007 回答