【问题标题】:What is the best possible way to tackle SQL Server transaction logs filling up disk space?解决 SQL Server 事务日志填满磁盘空间的最佳方法是什么?
【发布时间】:2013-03-20 00:04:36
【问题描述】:

我需要尽可能短的最佳方式来处理 SQL Server 事务日志文件,因为我的磁盘将来在保存它们时会出现问题。我不知道如何解决这个磁盘空间不足的问题,因为我的驱动器的可用空间已经在 MB 中。

现在,我不知道如果将日志移动到其他驱动器是否会丢失或影响日志,或者如果磁盘空间不足,是否会影响事务或如何根据以前的事务保存未来的日志完全满了。有人请帮忙!!

【问题讨论】:

  • 我备份了一定数量的 TL。不完整。但是“备份”是唯一的解决方案?
  • 如果您定期进行完整备份,您会发现您的事务日志文件不会增长太多。有很多关于备份和恢复的好文章——甚至在联机丛书中。如果你在备份前后对你的数据库运行DBCC SQLPERF('LOGSPACE'),你会看到区别

标签: sql-server transaction-log


【解决方案1】:

首先,您应该阅读the excellent answer written by Remus Rusanu

一开始,他写道:

让我们先从表中删除一些东西:不要删除或移动任何数据库 mdf 或 ldf 文件。您最终会损坏和丢失数据库。

澄清一下:可以将日志文件移动到另一个驱动器以释放当前驱动器上的空间。
只是当 SQL Server 正在使用数据库时,您不能/不应该只在 Windows 资源管理器中移动文件。

免责声明:如果您按照 Remus 回答中的步骤操作,您可能不需要这样做。

但您可能仍希望将日志文件移动到其他驱动器。
出于性能原因(如果数据库和日志文件位于两个不同的物理驱动器上,SQL Server 会更快,因为日志文件有很多写入),或者如果您仍然有磁盘空间问题 (即使你缩小日志文件或定期备份它,总有一天数据库会变大,以至于驱动器太小而无法容纳两个文件)。

要将日志文件(或数据库文件)移动到另一个位置,您需要:

  1. 从 SQL Server 分离数据库
  2. 移动文件
  3. 重新附加数据库并指定新文件位置

这里有两个带有屏幕截图的教程:

【讨论】:

    【解决方案2】:

    让我们首先从表中删除一些东西:不要删除或移动任何数据库 mdf 或 ldf 文件。您最终会损坏和丢失数据库。

    1. 您需要调查日志增长的原因。去阅读Factors That Can Delay Log Truncation。按照文章中的步骤确定日志增长的原因。

    2. 如果原因不是“LOG_BACKUP”,请发布更新,说明您发现的原因,我们可以提供进一步的建议。

    3. 如果原因 LOG_BACKUP,那么我们可以继续。您有一个未正确备份的非简单恢复模式的数据库。您需要回答一个问题:为什么数据库处于 SIMPLE 恢复模式?这是一个商业决策问题,所以我们不可能知道答案。

    4. 如果您不知道上述问题的答案,或者如果您意识到简单恢复模式是可以接受的,那么我们可以进行快速修复。将恢复模式更改为 SIMPLE,然后运行 ​​DBCC SHRINKFILE 以缩小日志。

    5. 如果您需要非 SIMPLE 恢复模式,那么您需要设置适当的日志备份计划并开始进行日志备份。阅读Transaction Log BackupsUse the Maintenance Plan Wizard。请参阅 See How to shrink the SQL Server Log 以了解由于日志的循环性质,为什么需要重复日志备份直到 SHRINKFILE 生效。

    【讨论】:

      猜你喜欢
      • 2018-04-29
      • 2010-09-23
      • 2015-10-22
      • 2010-09-19
      • 2021-01-29
      • 2023-03-21
      • 1970-01-01
      • 2020-12-29
      • 2010-09-23
      相关资源
      最近更新 更多