我有一个 Asp.Net MVC 5 网站,在共享托管计划中采用实体框架代码优先方法。它使用开源网站面板 http://www.websitepanel.net/控制面板及其 SQL Server 面板有些限制。今天想编辑数据库的时候,遇到了这样的错误:
The transaction log for database 'db_name' is full due to 'LOG_BACKUP'
我四处搜寻,发现了很多相关的答案,例如this https://stackoverflow.com/questions/8025344/transaction-log-for-database-is-full-sql-error and this https://stackoverflow.com/questions/13975905/potential-causes-and-solutions-for-the-transaction-log-in-database-being-full or this https://stackoverflow.com/questions/56628/how-do-you-clear-the-sql-server-transaction-log但问题是他们建议在数据库上运行查询。我尝试跑步
db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;");
与视觉工作室(在HomeController
)但我收到以下错误:
System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction.
我该如何解决我的问题?我应该联系支持团队(这对我的房东来说有点糟糕)还是我可以自己解决这个问题?
除了本的回答之外,您还可以根据需要尝试以下查询
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
Update Credit @cema-sp
要查找数据库文件名,请使用以下查询
select * from sys.database_files;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)