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