共有ホスティングプランにEntityFramework codefirstアプローチを使用したAsp.Net MVC 5 Webサイトがあります。コントロールパネルにはオープンソース WebbsitePanel を使用し、そのSQL Serverパネルは多少制限されています。今日、データベースを編集したいときに、次のエラーが発生しました。
The transaction log for database 'db_name' is full due to 'LOG_BACKUP'
私はあちこち検索して、 this や this または this のような関連する答えをたくさん見つけましたが、問題はデータベースでクエリを実行することを示唆していることです。走ってみた
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.
どうすれば問題を解決できますか?サポートチームに連絡する必要がありますか(これはホストにとって少し悪い)、または自分で解決できますか?
ホスティング会社に連絡して、定期的なログバックアップを設定するか、復旧モデルを単純に設定してください。何が選択を通知するか知っていると思いますが、とにかく明示します。任意の時点に復元する機能が必要な場合は、復旧モデルを完全に設定します。いずれにせよ、データベースはそのままで誤って構成されています。
ベンの答えに加えて、必要に応じて以下のクエリを試すことができます
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;
ディスクの容量が不足する場合、SQLステートメントの更新が失敗すると、「データベースXXXXXXXXXXのトランザクションログが「LOG_BACKUP」のためいっぱいです」というメッセージが返されることがあります。ディスクスペースを確認してください:)
このエラーは、LOG_BACKUPによりトランザクションログがいっぱいになるために発生します。したがって、このデータベースに対してアクションを実行することはできません。この場合、SQL Serverデータベースエンジンは9002エラーを発生させます。
この問題を解決するには、次のことを行う必要があります
このエラーに関するすべての詳細とその解決方法を記載した記事を データベース 'SharePoint_Config'のトランザクションログはLOG_BACKUPによりいっぱいです
私は同じエラーを受け取りましたが、バックエンドジョブ(SSISジョブ)からでした。データベースのログファイル拡張設定を確認すると、ログファイルは1GBの制限された拡張でした。そのため、ジョブが実行され、SQL Serverにより多くのログ領域を割り当てるように要求されましたが、ログの増加制限によりジョブが失敗しました。ログの成長を変更し、50MBの成長と無制限の成長に設定すると、エラーはなくなりました。