我有一个数据库,其tlog已增长到4.5 GB。 数据库处于完全恢复模式,我尝试了多个事务日志备份 DBCC shrinkfile。 它不会缩小。 有没有人有任何想法?
有几个事务的状态= 2,但数据库中没有活动事务。我想知道为什么他们仍然出现status = 2.
答案 0 :(得分:2)
DBCC OPENTRAN
获取未结交易最后,如果你真的被卡住了,我会考虑附加/分离来删除日志文件。但是,这只是在你绝望的时候......
答案 1 :(得分:1)
如果您实际上对事务日志的内容不感兴趣,请运行命令
BACKUP LOG dbname WITH NO_LOG
然后运行DBCC SHRINKFILE
编辑:没有意识到2008年已经删除了 - 我们只是转而使用它。在2008年,您必须暂时将恢复模型设置为simple,然后运行DBCC SHRINKFILE,然后再将恢复模型恢复为Full。 代码在这里:
http://www.uhleeka.com/blog/2009/08/sql-2008-shrink-log-file-size-with-no_lo/
答案 2 :(得分:1)
您很可能拥有以下其中一项:
还有其他一些可能性,但this kb article概述了大多数/所有可能的原因以及如何确定它们是否/在哪里/它们是什么,以及来自this kb article的一些额外的好信息和this kb article(最后一个有点过时,但大多数仍然适用)。
答案 3 :(得分:1)
如果是SQL,则获取数据库的完整备份,然后备份事务日志,然后收缩数据库。出于某种原因,它希望在截断日志之前进行完整备份。你可能可以使用差异,但看看第一部分是否有效。
答案 4 :(得分:0)
我们有一份工作从另一台链接服务器写入数据库。 它做了一些巨大的删除。 我们优化了这项工作,并且能够将日志文件成功缩小到100MB。
谢谢!
答案 5 :(得分:0)
就我而言,即使数据库看起来不像,它也被标记为要复制。
运行以下命令清除了复制,并且收缩文件命令按预期工作。
1)sp_replicationdboption'DatabaseName','publish','false'
2)sp_replicationdboption'DatabaseName','merge publish','false'
3)sp_removedbreplication'数据库名称'