Sql server 数据库的事务日志已满。要了解日志中的空间无法重用的原因,请参阅sys.databases中的log\u reuse\u wait\u desc列

Sql server 数据库的事务日志已满。要了解日志中的空间无法重用的原因,请参阅sys.databases中的log\u reuse\u wait\u desc列,sql-server,Sql Server,当我试图在单次删除查询中删除355447条记录时,出现以下错误 数据库的事务日志已满。要了解日志中的空间无法重用的原因,请参阅sys.databases中的log\u reuse\u wait\u desc列 我试过福勒。解决方案,但仍然删除抛出相同错误的语句 DBCC SHRINKFILE(DBname_Log, 2) BACKUP LOG gis_sync WITH TRUNCATE_ONLY DBCC SHRINKFILE(DBname_Log, 2) 请帮我解决。。。。 谢谢正如Dam

当我试图在单次删除查询中删除355447条记录时,出现以下错误

数据库的事务日志已满。要了解日志中的空间无法重用的原因,请参阅sys.databases中的log\u reuse\u wait\u desc列

我试过福勒。解决方案,但仍然删除抛出相同错误的语句

DBCC SHRINKFILE(DBname_Log, 2)
BACKUP LOG gis_sync WITH TRUNCATE_ONLY
DBCC SHRINKFILE(DBname_Log, 2)
请帮我解决。。。。
谢谢

正如Damien所说,你应该找出你的日志增长的原因。请查看此帖子以获取解释:

删除这么多记录本身就需要大量的日志空间,因此,如果无法为日志文件腾出更多空间,则可能需要通过几个较小的步骤删除这些行。如果您使用的是完全恢复,则必须在每个步骤之后进行日志备份

另一方面,备份日志。。。一般来说,只使用TRUNCATE_是一个非常糟糕的主意。如果您处于完全恢复模式,则这将中断备份链,并阻止您执行时间点恢复。如果不需要时间点可恢复性,请改用“简单恢复”设置。否则,请进行真正的日志备份,并将其与其他备份文件一起存储


日志文件上的DBCC SHRINKFILE对正在收缩的数据库没有任何帮助。您可以使用它为驱动器上的其他数据库腾出空间,但它不会为当前数据库腾出空间,因为它只能删除可重用的空间。这意味着它释放的任何空间都可以用于您的事务

另一方面,通过使用批处理删除大量行始终是一种良好的做法,并且可能是此类问题的解决方案:

WHILE EXISTS (SELECT 1 
              FROM   YourTable 
              WHERE  <yourCondition>) 
  DELETE TOP(10000) FROM YourTable 
  WHERE  <yourCondition>

我也面临同样的问题。我得到的结论是,当数据库文件所在的磁盘已满时,会出现此异常。要解决此问题,我只需增加磁盘的大小

该错误告诉您查看log\u reuse\u wait\u desc列。里面有什么?错误信息告诉你该怎么做。你真的读过吗?在我的例子中,上面写着日志备份。我该怎么办?谢谢你!这有助于我控制我的WUG DB。我的errors/discards表是我牺牲的:我需要一个月的ping和接口利用率监控,但只需要一两周的errors/discards。我的YourTable是dbo.statisticalinterface Errors and Discards,我的是dPollTime<'01-31-2015',更新了两周前的日期。我每周跑一次。很好。就我而言,这是最好的答案。你到底是如何增加磁盘大小的?大多数人不会将VM用于他们的数据库服务器!我也有同样的问题。增加磁盘大小有效。我还对日志进行了“收缩”操作,这给了我额外的85 GB。我在一个一次性测试数据库中遇到了这个问题-尝试进行事务日志备份,但没有足够的硬盘空间。因此,相反,我能够进入数据库属性,并将恢复模型更改为建议的简单,以解决这个问题-谢谢