缩小不情愿的日志文件

Pse*_*oad 4 sql-server-2008 sql-server

我有几个带有事务日志的 SQL Server 2008 数据库,这些数据库已经失控并填满了驱动器。这些日志之一是 68gb yikes

我知道最好不要通过截断日志来终止我的备份链,但是当我单独进行收缩时,在几个数据库上我没有任何空间回收,而在我做的那些上,数量可以忽略不计。我已经验证客户端每小时运行一次 t-log 备份,并且这些备份在过去几周内都成功了。

显然我错过了一些东西。有人可以指出我正确的方向,还是我只是不得不手动截断并祈祷在此期间什么也没有发生?

Aar*_*and 7

这是可能可以执行DBCC SHRINKFILE. 日志文件这么大很可能不是因为现在发生了什么,而是因为有一段时间没有运行每小时事务日志(或者您有一个在日志备份之间或跨日志备份运行的异常大的事务)。我不知道在哪里的误解从何而来,但备份日志并不能缩小文件给你,只在文件中释放空间。

您可以在不干扰日志链的情况下执行这样的一次性操作(或必须“希望”“在此期间没有发生任何事情”),最好是在日志备份成功完成后:

DBCC SHRINKFILE(yourdb_log, 4000);
Run Code Online (Sandbox Code Playgroud)

这应该将文件缩小到 ~4 GB,希望有足够的空间来容纳您的每小时交易。您可能想要选择不同的尺寸,我不确定...

如果此命令没有像您预期的那样缩小文件,您可以使用以下命令检查日志修改可能被阻止的原因:

SELECT log_reuse_wait_desc
  FROM sys.databases
  WHERE name = N'yourdb';
Run Code Online (Sandbox Code Playgroud)