Asp.net

“由於 ‘LOG_BACKUP’,數據庫的事務日誌已滿”在共享主機中

  • January 20, 2014

我在共享託管計劃中有一個使用 EntityFramework codefirst 方法的 Asp.Net MVC 5 網站。它使用開源的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;");

與視覺工作室(在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 

更新信用**@ cema-sp**

要查找數據庫文件名,請使用以下查詢

select * from sys.database_files;

引用自:https://stackoverflow.com/questions/21228688