Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 由于空间不足,无法删除数据库中的日志项_Sql_Sql Server 2008 R2 - Fatal编程技术网

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

Sql 由于空间不足,无法删除数据库中的日志项,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,我们遇到了这样一个问题:我们的日志表比实际预期的要大得多,而且似乎已经填满了我们分配的大部分数据库空间。我们无法增加可用空间,因此决定清除日志文件。但是,显然,即使在截断日志文件之后,我们也没有足够的空间来执行此操作。这有什么办法吗 这是我们正在运行的命令,我已经更改了表和数据库名称以及生成的错误 删除 来自[db].[dbo].[logtable] Msg 9002, Level 17, State 4, Line 2 The transaction log for database

我们遇到了这样一个问题:我们的日志表比实际预期的要大得多,而且似乎已经填满了我们分配的大部分数据库空间。我们无法增加可用空间,因此决定清除日志文件。但是,显然,即使在截断日志文件之后,我们也没有足够的空间来执行此操作。这有什么办法吗

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

删除 来自[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.

您应该能够改为使用truncate表


您应该能够改为使用truncate表


嗯,也许您可以截断logtable,这取决于您的表结构

或者分批分步进行:

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

嗯,也许您可以截断logtable,这取决于您的表结构

或者分批分步进行:

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

听起来像是在完全恢复模式下运行数据库,而从未备份过事务日志。根据您的情况,您应该切换到简单恢复模式或开始备份事务日志。要检查此项,请执行以下操作:

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

听起来像是在完全恢复模式下运行数据库,而从未备份过事务日志。根据您的情况,您应该切换到简单恢复模式或开始备份事务日志。要检查此项,请执行以下操作:

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

此链接可能对您有所帮助。我听说您已经截断了表,但是空间分配没有改变。为了恢复SQL Server中未使用的空间,您必须完成备份过程或此处确定的其他方法之一。此链接可能会对您有所帮助。我听说您已经截断了表,但是空间分配没有改变。为了恢复SQL Server中未使用的空间,您必须完成备份过程或此处确定的其他方法之一