web-dev-qa-db-ja.com

共有ホストで「 'LOG_BACKUP'が原因でデータベースのトランザクションログがいっぱいです」

共有ホスティングプランにEntityFramework codefirstアプローチを使用したAsp.Net MVC 5 Webサイトがあります。コントロールパネルにはオープンソース WebbsitePanel を使用し、そのSQL Serverパネルは多少制限されています。今日、データベースを編集したいときに、次のエラーが発生しました。

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

私はあちこち検索して、 thisthis または 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.

どうすれば問題を解決できますか?サポートチームに連絡する必要がありますか(これはホストにとって少し悪い)、または自分で解決できますか?

58
Alireza Noori

ホスティング会社に連絡して、定期的なログバックアップを設定するか、復旧モデルを単純に設定してください。何が選択を通知するか知っていると思いますが、とにかく明示します。任意の時点に復元する機能が必要な場合は、復旧モデルを完全に設定します。いずれにせよ、データベースはそのままで誤って構成されています。

27
Ben Thul

ベンの答えに加えて、必要に応じて以下のクエリを試すことができます

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;
99

ディスクの容量が不足する場合、SQLステートメントの更新が失敗すると、「データベースXXXXXXXXXXのトランザクションログが「LOG_BACKUP」のためいっぱいです」というメッセージが返されることがあります。ディスクスペースを確認してください:)

10
Hein Gous

このエラーは、LOG_BACKUPによりトランザクションログがいっぱいになるために発生します。したがって、このデータベースに対してアクションを実行することはできません。この場合、SQL Serverデータベースエンジンは9002エラーを発生させます。

この問題を解決するには、次のことを行う必要があります

  • データベースの完全バックアップを取ります。
  • ログファイルを圧縮して、物理ファイルサイズを小さくします。
  • LOG_BACKUPを作成します。
  • LOG_BACKUPメンテナンスプランを作成して、バックアップログを頻繁に取得します。

このエラーに関するすべての詳細とその解決方法を記載した記事を データベース 'SharePoint_Config'のトランザクションログはLOG_BACKUPによりいっぱいです

私は同じエラーを受け取りましたが、バックエンドジョブ(SSISジョブ)からでした。データベースのログファイル拡張設定を確認すると、ログファイルは1GBの制限された拡張でした。そのため、ジョブが実行され、SQL Serverにより多くのログ領域を割り当てるように要求されましたが、ログの増加制限によりジョブが失敗しました。ログの成長を変更し、50MBの成長と無制限の成長に設定すると、エラーはなくなりました。

1
Andy