为什么即使在备份之后我也无法收缩事务日志文件?

Jor*_*son 28 sql-server sql-server-2005

我有一个具有28gig事务日志文件的数据库.恢复模式很简单.我刚刚对数据库进行了完整备份,然后运行了两个:

backup log dbmcms with truncate_only

DBCC SHRINKFILE ('Wxlog0', TRUNCATEONLY)

backup log dbmcms with truncate_only

DBCC SHRINKFILE ('Wxlog0', TRUNCATEONLY)

backup log dbmcms with truncate_only

DBCC SHRINKFILE ('Wxlog0', TRUNCATEONLY)

db的名称是db_mcms,事务日志文件的名称是Wxlog0.

两者都没有帮助.我不知道下一步该做什么.

Jor*_*son 44

谢谢大家的回答.

我们终于找到了这个问题.在sys.databases中,log_reuse_wait_desc等于'replication'.显然,这意味着SQL Server在重用日志空间之前等待复制任务完成的效果.

从未在此数据库上使用复制,或者此服务器在此数据库上玩过一次.我们通过运行sp_removedbreplication清除了错误的状态.运行之后,备份日志和dbcc shrinkfile工作得很好.

绝对是一个包的技巧.

资料来源:

http://social.technet.microsoft.com/Forums/pt-BR/sqlreplication/thread/34ab68ad-706d-43c4-8def-38c09e3bfc3b

http://www.eggheadcafe.com/conversation.aspx?messageid=34020486&threadid=33890705

  • 我搜索了很长时间才找到你的帖子.这正是我的情况.我已经启用了禁用的db镜像.这显然是一件神器.谢谢! (3认同)
  • 正是我的问题,谢谢你发布调查结果. (2认同)

Nic*_*ias 29

如果您的数据库设置为自动增长日志并且最终会有大量虚拟日志文件,则可能会遇到此问题.
运行DBCC LOGINFO('databasename')并查看最后一个条目,如果这是2,则您的日志文件不会缩小.与数据文件不同,虚拟日志文件无法在日志文件中移动.

您需要多次运行BACKUP LOG和DBCC SHRINKFILE才能使日志文件缩小.

对于额外的奖励积分,在日志和推卸之间运行DBBC LOGINFO

  • 谢谢你,它解决了我的问题.更多技术细节,请访问http://technet.microsoft.com/en-us/library/ms178037%28v=sql.105%29.aspx和http://technet.microsoft.com/en-us/library/ms345414% 28V = SQL.105%29.aspx. (5认同)

小智 7

“sp_removedbreplication”并没有为我解决问题,因为 SQL 只是返回说数据库不是复制的一部分...

我在这里找到了答案:

基本上我必须创建一个复制,将所有复制指针重置为零;然后删除我刚刚所做的复制。IE

Execute SP_ReplicationDbOption {DBName},Publish,true,1
GO
Execute sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
GO
DBCC ShrinkFile({LogFileName},0)
GO
Execute SP_ReplicationDbOption {DBName},Publish,false,1
GO
Run Code Online (Sandbox Code Playgroud)