我的日志文件太大了

时间:2009-01-30 16:34:18

标签: sql-server logging backup

我在SQL Server中的日志文件用完了磁盘上的所有空间。我每晚都运行完整备份,但日志文件不断增长。我该怎么办?

9 个答案:

答案 0 :(得分:4)

在大多数繁忙的系统上,您需要查看全天的日程安排备份,然后查看每晚完整备份。这是很常见的做法。

答案 1 :(得分:4)

在某些情况下,即使运行了日志备份,您也可能会发现日志文件无法正确截断。您可以使用TRUNCATE_ONLY进行备份以进行检查。当你运行它时,它应该截断事务日志:

BACKUP LOG dbname WITH TRUNCATE_ONLY

此问题的原因是日志的早期部分中的打开事务。 SQL不会截断此事务之后的日志,从而可能导致日志量不断增加。您需要找出哪些交易保持开放以及原因。您可以使用以下方式监控日志空间:

DBCC SQLPERF (LOGSPACE)

有关长时间运行交易的信息,请参阅:

DBCC OPENTRAN 

或者:

select * from sys.dm_tran_database_transactions 

答案 2 :(得分:3)

如果您的作业计划进行完整备份,这很好,应该是您的起点,但您还需要执行常规的事务日志备份。

备份事务日志会导致重新标记空间。一旦定义了常规事务日志备份计划,您可能会考虑将事务日志缩小到更适合的大小。因为它将不再无限增长。

完全恢复的备份策略包括:

* Database backups.

* Differential backups (optional).

* Transaction log backups.

我建议您参考以下Microsoft参考资料。

http://msdn.microsoft.com/en-us/library/aa173551(SQL.80).aspx

答案 3 :(得分:1)

您必须备份日志以及主数据库

答案 4 :(得分:0)

您可以使用某种日志轮换,并且只保留固定时间的日志,比如过去7天。这应该绰绰有余。或者您可以每晚重置日志,因为您应该在备份中使用它。

答案 5 :(得分:0)

这应该缩小它:

dbcc shrinkfile('databasename_log', 0)

答案 6 :(得分:0)

试试这个:

dump transaction <dbname> with no_log

然后通过在sql server设置中设置autoshrink选项来缩小日志文件。

我认为你也可以使用dbcc来缩小它,但我不记得语法。

答案 7 :(得分:0)

最好将事务日志备份添加到您的计划中。

BACKUP LOG database TO DISK = 'D:/database_log.bak'

请记住,在完整或大容量日志恢复模型中,事务日志在事务日志备份时会被截断,因此需要定期备份日志以管理事务日志的大小。否则,事务日志文件将增长,直到没有剩余空间。

如果不需要时间点恢复并且数据库更改很少,则最好使用简单的恢复模型(没有事务日志)。 在这种情况下,将自动截断事务日志以删除任何非活动的虚拟日志文件。在简单恢复模型中,事务日志截断发生在每个检查点之后。

答案 8 :(得分:-1)

删除日志文件?

编辑:显然删除日志文件很糟糕,它只是只是日志到SQL服务器。我要离开这一点重申不该做的事情。