2008-09-16 62 views
9

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

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

附加信息:启用AutoGrowth已启用,增长10%,限制为40MB。

回答

4

斯科特,你猜到了:截断日志是一个糟糕的举动,如果你关心你的数据。

下,免费,视频将帮助你看看究竟是怎么回事,并会告诉你如何解决问题,而不截断日志。 (这些视频也解释了为什么是这样一个危险的黑客,为什么你是对的,寻找另一种解决方案。)

连同这些影片将帮助你了解到底发生了什么,并会告诉你是否要切换到SIMPLE恢复,或者看看是否真的改变了你的备份例程。还有一些额外的'how-to'视频,将向您显示如何设置备份以确保可用性,同时管理日志文件的大小和增长。

-1

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

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

0

那么你可以采取事务日志的副本,然后截断日志文件,该文件是错误消息表明什么。

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

2

我不认为重命名或移动日志文件将工作,而数据库联机。

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

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

+1

更精确的术语可能是“简单恢复模型”。 – SeaDrive 2010-02-17 16:02:09

0

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

17

要刚刚清空:

backup log <dbname> with truncate_only 

要保存在某个地方吧:

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

如果你并不真正需要的交易历史,尝试数据库恢复模式设置为简单。

+5

SQL 2008中停止日志备份的TRUNCATE_ONLY选项。 – Sean 2010-04-19 20:51:53

0

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

dump tran <db_name> with no_log; 

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

+0

这是现在不推荐使用的旧语法。 BACKUP LOG是首选方法。 – 2008-09-16 15:13:06

1

我谁在过去面对这个错误的朋友建议:

尝试

  • 备份数据库。维护计划包括截断这些文件。
  • 也可以尝试更改为DB的“恢复模式”来简单(而不是全部例如)

原因: 事务日志膨胀起来,由于被记录的事件(也许你有一些交易失败和被回滚..或在交易中突然峰值在服务器上)

0

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

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

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

2

醚备份数据库日志定期,如果你需要恢复到分钟或做其他有趣的东西就像日志传送的未来,或将数据库设置为简单模式和收缩的数据文件。

不要复制,重命名或删除.ldf文件,否则会破坏你的数据库,你从此一蹶不振后,你可能有数据不一致的状态使之无效。

0

我亲爱的朋友的DBA检查他的日志文件中非常常见的是合租重要。因为如果有一天你不太关注它,它会给出这个错误。

为此,你必须使日志文件就不会面临这样的错误,定期进行备份。

其他那么这个以上给出的建议是非常正确的。

相关问题