Ali*_*ori 69 database sql-server asp.net asp.net-mvc
我有一个Asp.Net MVC 5网站,在共享主机方案中使用EntityFramework codefirst方法.它使用开源WebbsitePanel作为控制面板,其SQL Server面板有些限制.今天当我想编辑数据库时,我遇到了这个错误:
The transaction log for database 'db_name' is full due to 'LOG_BACKUP'
Run Code Online (Sandbox Code Playgroud)
我四处搜索,发现了很多相关的答案,比如这个或这个或者这个问题,但问题是他们建议在数据库上运行查询.我试过跑步
db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;");
Run Code Online (Sandbox Code Playgroud)
使用visual studio(在HomeController
)上但是我收到以下错误:
System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction.
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决我的问题?我应该联系支持团队(这对我的主人来说有点差)还是我可以自己解决?
Moh*_*ari 115
除了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
Run Code Online (Sandbox Code Playgroud)
更新 Credit @ cema-sp
要查找数据库文件名,请使用以下查询
select * from sys.database_files;
Run Code Online (Sandbox Code Playgroud)
Ben*_*hul 29
致电您的托管公司,让他们设置定期日志备份或将恢复模式设置为简单.我确定你知道是什么通知了这个选择,但无论如何我都会明白.如果需要恢复到任意时间点的能力,请将恢复模型设置为完全.无论哪种方式,数据库都是错误配置的.
发生此错误是因为LOG_BACKUP导致事务日志变满.因此,您无法对此数据库执行任何操作,在这种情况下,SQL Server数据库引擎将引发9002错误.
要解决此问题,您应该执行以下操作
我写了一篇文章,其中包含有关此错误的所有详细信息以及如何在数据库"SharePoint_Config"的事务日志中解决此错误,因为LOG_BACKUP已满
当日志文件的大小受到限制时,也会发生这种情况。
在对象资源管理器中右键单击数据库
选择属性
选择文件
在日志行上,单击 Autogrowth / Maxsize 列中的省略号
更改/验证最大文件大小是无限的。
更改为无限制后,数据库恢复生机。