所以我们的 SQL Server 2000 给我错误,“数据库的日志文件已满。备份数据库的事务日志以释放一些日志空间。”

我该如何解决这个问题而不像其他网站提到的那样删除日志?

附加信息:启用自动增长可以增长 10%,并且限制为 40MB。

有帮助吗?

解决方案

斯科特,正如你所猜测的:如果您关心数据,那么截断日志是一个糟糕的举动。

以下免费视频将帮助您准确了解正在发生的情况,并向您展示如何在不截断日志的情况下解决问题。(这些视频还解释了为什么这是一个如此危险的黑客行为,以及为什么您应该寻找其他解决方案。)

这些视频将帮助您准确了解正在发生的情况,并向您展示是否要切换到简单恢复,或者考虑实际更改备份例程。还有一些额外的“操作方法”视频,将向您准确展示如何设置备份以确保可用性,同时管理日志文件大小和增长。

其他提示

清空它:

backup log <dbname> with truncate_only  

要将其保存在某处:

backup log <dbname> to disk='c:\somefile.bak'

如果您确实不需要事务历史记录,请尝试将数据库恢复模式设置为简单。

如果您需要恢复到最新状态或将来执行其他有趣的操作(例如日志传送),请定期备份数据库日志,或者将数据库设置为简单模式并缩小数据文件。

请勿复制、重命名或删除 .ldf 文件,这会破坏您的数据库,并且在从中恢复后,您的数据可能会处于不一致的状态,从而使其无效。

我认为在数据库在线时重命名或移动日志文件不起作用。

IMO,最简单的事情是打开数据库的属性并将其切换到简单恢复模型。然后缩小数据库,然后返回并将数据库设置为完全恢复模型(或您需要的任何模型)。

更改日志记录模式会强制 SQL Server 在数据库中设置检查点,之后收缩数据库将释放多余的空间。

我过去遇到过这个错误的朋友建议:

尝试

  • 备份数据库。维护计划包括截断这些文件。
  • 还可以尝试将数据库的“恢复模式”更改为 简单的 (代替 满的 例如)

原因:由于记录的事件,事务日志会膨胀(也许您有许多事务失败并被回滚..或服务器上的交易突然达到峰值)

您可能想检查相关的SO问题:

那么,您可以获取事务日志的副本,然后截断日志文件,这就是错误消息所建议的内容。

如果磁盘空间已满并且无法通过网络将日志复制到另一台计算机,则可以通过 USB 连接驱动器并通过这种方式将其复制。

你的问题里已经有了答案:备份日志,然后它会被收缩。制定维护计划定期备份数据库,不要忘记选择“备份事务日志”。这样你就可以让它变小。

如果它是一个 生产环境使用

dump tran <db_name> with no_log;

完成后,缩小日志文件以释放磁盘空间。最后将数据库恢复模式切换为简单。

一旦您对数据库进行了完整备份,并且数据库未使用简单恢复模型,SQL Server 就会保留在数据库上执行的所有事务的完整记录。这样做是为了在发生丢失数据文件的灾难性故障时,您可以通过备份日志来恢复到故障点,并且一旦恢复了旧的数据备份,就可以恢复日志以重放丢失的数据。交易。

为了防止这种情况的发生,您必须备份事务日志。或者,您可以使用 BACKUP LOG 的 TRUNCATE_ONLY 或 NO_LOG 选项在当前点断开链。

如果不需要此功能,请将恢复模式设置为“简单”。

我亲爱的朋友,对于 DBA 来说,经常检查他的日志文件非常重要。因为如果你不给予太多关注,有一天它就会出现这个错误。

为此,您必须定期进行备份,以便日志文件不会遇到此类错误。

除此之外,上面给出的建议是非常正确的。

重命名它吧。例如:
旧日志-16-09-08.log

然后SQL Server 就可以使用一个新的空SQL Server。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top