SQL Server 事务日志已满,如何清空并删除它们

SQL Server 事务日志已满,如何清空并删除它们

我的事务日志文件已满,我有 5 个日志文件,2 个在 D:驱动器中,3 个在 E:驱动器中。所有日志文件都已满,每个日志文件大小为 10GB。

我需要删除所有 5 个事务日志文件,并且需要一个新的截断日志文件

我曾尝试过以下方法:1. 从完整文件转换为简单和 shrik 文件(但效果不佳,它并没有减小尺寸。

任何帮助,提前感谢

答案1

这是一个非常常见的 SQL Server 问题,互联网上已经有大量相关记录。例如,在 Google 上,我花了不到 5 秒钟就找到了以下文章,它将帮助您解决问题:

救命!我的 SQL Server 日志文件太大了!!!

答案2

所以你有一个大事务,它占用了大量的 tran 空间,对吧?我通常会对导致问题的 DML 进行批量提交。这是在这么多记录强制提交之后。你可以在 while 循环中执行此操作。

或者,您可以暂时将您的 tran 日志增加到所需的大小,运行大型事务,然后以正常大小重新创建 tran 日志。

答案3

查看这个 ServerFault 问题关于同一问题。

结果是您需要执行以下操作之一:

  1. 如果确实需要完全恢复模式,请定期进行日志备份
  2. 如果没有,请切换到简单模式
  3. (不太常见的问题)批量执行大量操作,而不是一次性执行

通常,您不需要多个日志文件(或者每个驱动器一个日志文件)。

切换到简单模式后,使用带有 EMPTYFILE 参数的 DBCC SHRINKFILE 来缩小额外的日志文件(如果日志文件正在使用中,则可能需要多次尝试,或者您可能必须等待活动事务完成)。

然后使用 ALTER DATABASE MODIFY FILE 删除多余的日志文件。

相关内容