“由于共享主机中的‘LOG_BACKUP’,数据库事务日志已满”

问题描述 投票:0回答:7

我有一个 Asp.Net MVC 5 网站,在共享托管计划中采用 EntityFramework codefirst 方法。它使用开源的WebbsitePanel作为控制面板,并且它的SQL Server面板有些限制。今天想编辑数据库的时候,遇到了这个错误:

The transaction log for database 'db_name' is full due to 'LOG_BACKUP'

我四处搜索,发现了很多相关的答案,例如thisthisthis,但问题是他们建议在数据库上运行查询。我尝试跑步

db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;");

使用 Visual Studio(在

HomeController
上),但出现以下错误:

System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction.

我该如何解决我的问题?我应该联系支持团队(这对我的房东来说有点糟糕)还是我可以自己解决这个问题?

asp.net sql-server asp.net-mvc database
7个回答
250
投票

除了Ben的答案之外,您还可以根据您的需要尝试以下查询

USE {database-name};  
GO  
-- Truncate the log by changing the database recovery model to SIMPLE.  
ALTER DATABASE {database-name}
SET RECOVERY SIMPLE;  
GO  
-- Shrink the truncated log file to 1 MB.  
DBCC SHRINKFILE ({database-file-name}, 1);  
GO  
-- Reset the database recovery model.  
ALTER DATABASE {database-name}
SET RECOVERY FULL;  
GO 

更新信用@cema-sp

要查找数据库文件名,请使用以下查询

select * from sys.database_files;

48
投票

致电您的托管公司,让他们设置定期日志备份或将恢复模式设置为简单。我相信您知道选择的依据是什么,但无论如何我都会明确表示。如果您需要恢复到任意时间点的能力,请将恢复模式设置为完整。无论哪种方式,数据库都配置错误。


32
投票

有时,当磁盘空间不足时,更新 SQL 语句失败时会返回“transaction log for database XXXXXXXXXX is full due to 'LOG_BACKUP'”消息。 检查您的磁盘空间:)


12
投票

当日志文件大小受到限制时,也可能会发生这种情况。

在对象资源管理器中右键单击数据库

选择属性

选择文件

在日志行上,单击“自动增长/最大大小”列中的省略号

更改/验证最大文件大小是否无限制。

更改为无限制后,数据库又恢复活力了。


10
投票

出现此错误是因为 LOG_BACKUP 导致事务日志已满。因此,您无法对此数据库执行任何操作,在这种情况下,SQL Server 数据库引擎将引发 9002 错误。

要解决此问题,您应该执行以下操作

  • 进行完整数据库备份。
  • 缩小日志文件以减小物理文件大小。
  • 创建 LOG_BACKUP。
  • 创建 LOG_BACKUP 维护计划以经常备份日志。

我写了一篇文章,其中包含有关此错误的所有详细信息以及如何解决该错误,网址为 数据库“SharePoint_Config”的事务日志因 LOG_BACKUP 已满


1
投票

我得到了同样的错误,但是来自后端作业(SSIS 作业)。检查数据库的日志文件增长设置后发现,日志文件的增长限制为 1GB。那么发生的情况是,当作业运行时,它要求 SQL Server 分配更多的日志空间,但日志的增长限制下降导致作业失败。我修改了日志增长并将其设置为增长 50MB 和无限增长,错误消失了。


0
投票

救援方法:

运行查询:获取数据库文件名

从sys.database_files中选择*; 然后运行这个查询:

使用{数据库名称}; GO——通过将数据库恢复模式更改为“SIMPLE”来截断日志。 ALTER DATABASE {数据库名称}设置恢复简单; GO -- 将截断的日志文件缩小到 1 MB。 DBCC SHRINKFILE ({数据库文件名}, 1); GO -- 重置数据库恢复模型。
更改数据库 {数据库名称} 设置恢复完全;
去吧

© www.soinside.com 2019 - 2024. All rights reserved.