代码之家  ›  专栏  ›  技术社区  ›  Scott Gottreu

数据库的日志文件已满

  •  9
  • Scott Gottreu  · 技术社区  · 16 年前

    所以我们的SQL Server2000给出了一个错误:“数据库的日志文件已满。备份数据库的事务日志以释放一些日志空间。“

    如何在不删除日志的情况下修复此问题,就像其他网站提到的那样?

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

    12 回复  |  直到 12 年前
        1
  •  4
  •   Michael K. Campbell    16 年前

    正如您所猜测的:如果您关心您的数据,截断日志是一个糟糕的操作。

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

    这些视频将帮助您准确了解正在发生的事情,并向您展示您是希望切换到简单恢复,还是希望实际更改备份例程。还有一些附加的“操作方法”视频,将向您详细介绍如何设置备份,以确保在管理日志文件大小和增长时的可用性。

        2
  •  17
  •   TrevorD    16 年前

    清空它:

    backup log <dbname> with truncate_only  
    

    要将其保存到某个位置:

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

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

        3
  •  2
  •   Wes Brown    16 年前

    如果您需要恢复到最新状态或在将来执行日志传送之类的有趣操作,或者将数据库设置为简单模式并收缩数据文件,则可以定期备份数据库日志。

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

        4
  •  2
  •   cori    13 年前

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

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

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

        5
  •  1
  •   Gishu    16 年前

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

    尝试

    • 备份数据库。维护计划包括截断这些文件。
    • 同时尝试将数据库的“恢复模式”更改为 简单的 而不是 例如)

    原因: 事务日志由于正在记录的事件而膨胀(可能有许多事务失败并被回滚)。或者服务器上事务的突然峰值)

        6
  •  1
  •   Community CDub    7 年前
        7
  •  0
  •   Marc Gear    16 年前

    您可以复制事务日志,然后截断日志文件,这就是错误消息所建议的。

    如果磁盘空间已满,并且无法通过网络将日志复制到另一台计算机上,请通过USB连接驱动器,然后将其复制到其他计算机上。

        8
  •  0
  •   Miroslav Zadravec    16 年前

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

        9
  •  0
  •   Jim Prince    16 年前

    如果是 生产环境使用

    dump tran <db_name> with no_log;
    

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

        10
  •  0
  •   Mike Dimmick    16 年前

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

    要防止此累积,必须备份事务日志。或者,您可以使用备份日志的“仅截断日志”或“不截断日志”选项在当前点断开链。

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

        11
  •  0
  •   shadab shah    12 年前

    我亲爱的朋友,DBA经常检查他的日志文件非常重要。因为如果有一天你不太注意它,它就会产生这个错误。

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

    另外,上述建议是完全正确的。

        12
  •  -1
  •   Fire Lancer    16 年前

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

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