关于sql server:数据库的日志文件已满

关于sql server:数据库的日志文件已满

The log file for database is full

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

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

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


要将其清空:

1
backup log <dbname> with truncate_only

要将其保存在某处:

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

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


正如您所猜测的那样,Scott:如果您关心数据,则截断日志是一个不好的举动。

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

  • SQL Server备份神秘化
  • SQL Server日志记录要点
  • 了解备份选项

这些视频共同帮助您准确了解发生了什么,并向您展示是要切换到SIMPLE恢复,还是要研究实际更改备份例程。另外还有一些"操作方法"视频,这些视频将向您确切介绍如何设置备份以确保可用性,同时管理日志文件的大小和增长。


如果需要恢复到最新状态或将来做其他有趣的事情(如将来的日志传送),或将数据库设置为简单模式并缩小数据文件,则ether会定期备份数据库日志。

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


我认为在数据库联机时重命名或移动日志文件是行不通的。

IMO最简单的方法是打开数据库的属性,然后将其切换为简单恢复模型。然后收缩数据库,然后返回并将数据库设置为Full Recoery Model(或所需的任何模型)。

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


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

  • 如何清除SQL Server 2005数据库中的事务日志?

过去曾遇到此错误的朋友建议:

尝试

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

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


亲爱的朋友,DBA经常检查他的日志文件非常重要。 因为如果有朝一日您对此没有给予太多关注,它将导致此错误。

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

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


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

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

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


如果是非生产环境,请使用

1
dump tran <db_name> with no_log;

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


您有问题的答案:备份日志,然后将其缩小。
制定维护计划以定期备份数据库,并且不要忘记选择"备份事务日志"。这样一来,您就可以将其缩小。


好了,您可以复制事务日志,然后截断日志文件,这就是错误消息的提示。

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


重命名它。例如:
old-log-16-09-08.log

然后,SQL Server可以使用一个新的空服务器。


推荐阅读