2

我有一个数据库,其 tlog 已增长到 4.5 GB。数据库处于完全恢复模式,我已经尝试了几个事务日志备份以及 DBCC 收缩文件。而且不会缩水。有没有人有任何想法?

有几个事务的状态 = 2,但数据库中没有活动事务。我想知道为什么他们仍然以 status=2 出现。

4

6 回答 6

1
  • 用于DBCC OPENTRAN获取未结交易
  • 中密度纤维板有多大?如果是 5GB 或以上,我会留下日志文件
  • 也许日志文件需要是他的大
  • 当它长大时,它会再次分裂
  • 看看Paul Randall的网站。他写了很多t-log代码...

最后,如果你真的卡住了,我会考虑附加/分离来删除日志文件。然而,这只是在你绝望的时候......

于 2009-11-12T06:25:20.003 回答
1

如果是 SQL,则对数据库进行完整备份,然后备份事务日志,然后收缩数据库。出于某种原因,它喜欢在截断日志之前进行完整备份。您可能能够摆脱差异,但看看第一部分是否有效。

于 2009-11-12T06:31:39.867 回答
1

如果您实际上对事务日志的内容不感兴趣,请运行命令

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/

于 2009-11-12T00:48:31.997 回答
1

您很可能有以下情况之一:

  • 未提交的交易
  • 孤立的交易
  • 长时间运行的操作(如索引碎片整理/重建、创建索引、checkdb、长时间运行的查询等)
  • 如果您使用复制,未复制的事务

还有其他一些可能性,但是这篇 kb 文章概述了大多数/所有可能的原因以及如何确定它们是否/在哪里/它们是什么,以及来自这篇 kb 文章这篇 kb 文章的一些额外的好信息(最后一篇有点过时,但大多数仍然适用)。

于 2009-11-12T02:35:47.333 回答
0

我们有一项从另一个链接服务器写入数据库的工作。它正在做一些巨大的删除。我们优化了这项工作,并且能够成功地将日志文件缩小到 100MB。

谢谢!

于 2009-11-12T23:13:55.250 回答
0

在我的例子中,数据库被标记为复制,即使它看起来不像。

运行以下命令清除复制,shrinkfile 命令按预期工作。

1) sp_replicationdboption 'DatabaseName','publish','false'

2) sp_replicationdboption 'DatabaseName','merge publish','false'

3) sp_removedbreplication '数据库名'

参考:https ://social.msdn.microsoft.com/Forums/sqlserver/en-US/cc853b02-6f00-49d6-8419-9ad1cb9dbfb5/cant-detachdelete-migrated-db-mistakenly-marked-for-replication?forum= sql复制

于 2019-12-21T18:49:55.797 回答