由于空间不足,无法删除数据库中的日志条目

时间:2011-05-31 13:42:20

标签: sql sql-server-2008-r2

我们遇到了一个问题,我们的日志表远远大于实际预期,并且似乎填满了我们分配的大部分数据库空间。我们无法增加可用空间量,因此我们决定清除日志文件。但是,显然我们没有足够的空间来执行此操作(即使在截断日志文件之后)。有没有办法解决这个问题?

这是我们正在运行的命令(我已经更改了表和数据库名称)以及生成的错误。

DELETE   FROM [db]。[dbo]。[logtable]

   Msg 9002, Level 17, State 4, Line 2

The transaction log for database 'db' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Msg 1101, Level 17, State 12, Line 2

Could not allocate a new page for database 'db' because of insufficient disk space in filegroup 'PRIMARY'. Create the necessary space by dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

4 个答案:

答案 0 :(得分:1)

您应该能够使用truncate table。

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

答案 1 :(得分:1)

好吧,也许您可​​以截断logtable,具体取决于您的表结构。

或者一步一步地进行(批量):

WHILE @@ROWCOUNT <> 0
begin
delete t1
from (select top (100) *
        from logtable
      end   
 end

答案 2 :(得分:1)

听起来你在完全恢复模式下运行数据库而没有备份事务日志。根据您的具体情况,您应该切换到SIMPLE恢复模式或开始备份事务日志。要检查一下:

SELECT name, recovery_model_desc 
    FROM sys.databases
    WHERE name = 'YourDatabaseName'

答案 3 :(得分:1)

此链接可能对您有所帮助。我读到你已经截断了表,但空间分配没有改变。为了恢复SQL Server中未使用的空间,您必须完成备份过程或此处标识的其他方法之一https://web.archive.org/web/20081109185636/http://sqlserver2000.databases.aspfaq.com:80/how-do-i-reclaim-space-in-sql-server.html