SQL SERVER事务日志已满

时间:2010-11-09 10:50:14

标签: sql sql-server sql-server-2005 sql-server-2008

如何在SQL SERVER 2005中释放事务日志空间:

我的事务日志大小= 70 GB,并且在不同的驱动器中有四个事务日志1,2,3,4。 通过DBCC SQLPERF(LOGSPACE)我发现事务日志是Full(使用100%),我想释放事务日志中的空间,我不想要T-log备份。我没有空间来备份事务日志。我的数据库处于复制状态。

  1. 如何释放交易日志或
  2. 我可以只有一个日志文件或
  3. ,而不是3个事务日志文件
  4. 如果缩小方法如何处理复制?

4 个答案:

答案 0 :(得分:5)

执行以下语句序列:

BACKUP LOG <db_name> WITH TRUNCATE_ONLY  
--or save to log to other drives on disk if required
GO

CHECKPOINT
GO

--replace 2 with your actual log file number.
DBCC SHRINKFILE (2, 100)     

如果日志没有缩小,请检查日志文件增长的原因。有关这方面的更多信息,请访问:

http://sqlreality.com/blog/ms-sql-server-2008/troubleshooting-the-full-transaction-log-problem/

答案 1 :(得分:0)

查看Microsoft的以下文章。

http://msdn.microsoft.com/en-us/library/ms175495.aspx

  

我希望释放空间   事务日志,我不想要T-log   备份

MS不支持此功能。

此处需要事务日志备份。得到一个驱动器,做到这一点。

如果您不这样做,则无法释放日志。

如果不释放日志,则无法缩小文件。因此,无论您是否愿意,都需要进行备份。

如果您不关心事务日志,则应该以简单恢复模式创建数据库,以便开始使用。

答案 2 :(得分:0)

单独收缩文件会实现你想要的吗?

DBCC SHRINKFILE (N'LogFile', 1)

答案 3 :(得分:0)

已经讨论了有关复制数据库here上的恢复模型切换的问题。你可以阅读一些documentation as well on MSDN

如果由于空间限制而不想进行T-log备份,可以将复制的数据库放在简单恢复模型中并尝试:

执行检查点。 SIMPLE恢复模式下的数据库清除每个检查点上的LOG LOG。

DBCC SHRINKFILE (N'LogFileName', 1) -- shrink the log file to 1 MB 

之后将其更改为Full。 为了删除一些数据库的日志文件,首先必须清空要删除的文件,然后将其删除。详情here