2009-11-12 92 views
0

我有一个数据库,其TLOG已发展到4.5 GB。 的DB是完全恢复模式,我曾尝试加上 DBCC SHRINKFILE几个事务日志备份。 它不会缩小。 有没有人有任何想法?无法收缩事务日志,无论我做什么

存在具有状态= 2的几个交易,但在数据库中没有活动的事务。我想知道他们为什么仍然显示status = 2。

+2

jeeeeeeeeeeeeeeeee! – JohnIdol 2009-11-12 00:47:12

+1

我为大日志转储道歉。 – sharadov 2009-11-12 00:55:24

+0

请删除转储,因为我无法编辑您的帖子。 – Middletone 2009-11-12 06:36:11

回答

0

我们有一个工作与另一个链接服务器写入数据库。 这是做了一些巨大的删除。 我们对该作业进行了优化,并能够将日志文件成功缩减至100MB。

谢谢!

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/

+0

在SQL Server 2008中删除了NO_LOG和WITH TRUNCATE_ONLY两个命令。 – sharadov 2009-11-12 00:52:23

+0

已更新为其他解决方案。 – MartW 2009-11-12 02:05:11

+0

我试过了,没有帮助。 事实上,当数据由于数据导入而变得非常大时,数据库变得非常简单。 因此,我切换到完整状态,执行了完整和tlog的备份,然后运行了dbcc shrinkfile,这一切都没有帮助。 – sharadov 2009-11-12 02:20:34

1

你最有可能有下列之一:

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

还有一些其他的可能性还有,但是this kb article概括大多数/所有可能的原因,以及如何确定是否/何处/它们是什么,以及来自this kb articlethis kb article一些额外良好的信息(这最后一个有点过时,但大多仍然适用)。

2
  • 使用DBCC OPENTRAN拿开交易
  • 多大MDF?如果是5GB或以上,我会离开的日志文件
  • 也许日志文件需要他的大
  • 如果它生长,它就将再次碎裂
  • 看一看Paul Randall的网站。他写了很多的t日志代码...

最后,我会考虑安装/拆卸如果你真的卡住删除日志文件。然而,这仅仅是当你绝望......

+1

注意:分离数据库,删除日志文件,然后尝试仅附加MDF并重建日志可能会使数据库处于不一致甚至损坏的状态。 – 2009-11-12 14:23:40

+0

@Aaron:我知道,但OP似乎坚定不移... – gbn 2009-11-12 15:49:26

1

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

+0

不要在UI中使用DBCC SHRINKDATABASE或缩小数据库选项。如果您需要缩小单个文件,则显式使用DBCC SHRINKFILE会更好。请参阅Tibor的网站:http://www.karaszi.com/SQLServer/info_dont_shrink.asp另请参阅此处的链接和讨论:http://is.gd/4TnHZ – 2009-11-12 14:23:06

相关问题