122

全期間にわたってトランザクションを開いたままにしておく長時間実行プロセスがあります。

これが実行される方法を制御することはできません。

トランザクションは全期間開いたままになるため、トランザクション ログがいっぱいになると、SQL Server はログ ファイルのサイズを増やすことができません。

したがって、プロセスはエラーで失敗します"The transaction log for database 'xxx' is full"

データベースのプロパティでトランザクション ログ ファイルのサイズを大きくして、これを防止しようとしましたが、同じエラーが発生します。

次に何を試すべきかわからない。このプロセスには数時間かかるため、試行錯誤を繰り返すのは簡単ではありません。

何か案は?

誰かが興味を持っている場合、プロセスは組織のインポートですMicrosoft Dynamics CRM 4.0.

十分なディスク容量があり、単純なログ モードでログがあり、プロセスを開始する前にログをバックアップしました。

-=-=-=-=- 更新 -=-=-=-=-

これまでのすべてのコメントに感謝します。以下は、開いているトランザクションが原因でログが大きくならないと私が信じるに至った理由です。

次のエラーが表示されます...

Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception:
System.Data.SqlClient.SqlException: The transaction log for database 'xxx' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

そのアドバイスに従って " log_reuse_wait_desc column in sys.databases" に行ったところ、" " という値が保持されていましたACTIVE_TRANSACTION

マイクロソフトによると: http://msdn.microsoft.com/en-us/library/ms345414(v=sql.105).aspx

つまり、次のことを意味します。

トランザクションがアクティブです (すべての復旧モデル)。• ログ バックアップの開始時に、実行時間の長いトランザクションが存在する可能性があります。この場合、スペースを解放するには、別のログ バックアップが必要になる場合があります。詳細については、このトピックで後述する「実行時間の長いアクティブ トランザクション」を参照してください。

• トランザクションが延期されます (SQL Server 2005 Enterprise Edition 以降のバージョンのみ)。据え置きトランザクションは、事実上、使用できないリソースのためにロールバックがブロックされているアクティブなトランザクションです。遅延トランザクションの原因と、それらを遅延状態から移動する方法については、「遅延トランザクション」を参照してください。

私は何かを誤解しましたか?

-=-=-=- 更新 2 -=-=-=-

初期ログ ファイル サイズを 30GB に設定してプロセスを開始しました。これには数時間かかります。

-=-=-=- 最終更新 -=-=-=-

この問題は、実際にはログ ファイルが使用可能なすべてのディスク領域を消費したことが原因でした。前回の試行で 120GB を解放しましたが、それでもすべてを使用し、最終的に失敗しました。

プロセスが夜間に実行されていたときに、失敗時にロールバックしていたため、これが以前に発生していることに気づきませんでした。今回はロールバック前のログファイルサイズを確認できました。

ご意見をお寄せいただきありがとうございます。

4

14 に答える 14

107

この問題を解決するには、リカバリ モデルシンプルに変更してから、ファイル ログを縮小します。

1. データベースのプロパティ > オプション > 復旧モデル > シンプル

2. データベース タスク > 縮小 > ファイル > ログ

終わり。

次に、 [データベース プロパティ] > [ファイル] > [データベース ファイル] > [パス]で db ログ ファイルのサイズを確認します。

完全な SQL サーバー ログを確認するには、[SSMS] > [データベース] > [管理] > [SQL Server ログ] > [現在] でログ ファイル ビューアーを開きます。

于 2014-07-14T03:16:34.410 に答える
44

I had this error once and it ended up being the server's hard drive that run out of disk space.

于 2014-06-05T13:59:18.177 に答える
21

これは 1 回限りのスクリプトですか、それとも定期的に発生するジョブですか?

以前は、ログ ファイル用に大量のスペースを一時的に必要とする特別なプロジェクトのために、2 つ目のログ ファイルを作成して巨大化していました。プロジェクトが完了したら、余分なログ ファイルを削除しました。

于 2013-07-16T11:35:01.683 に答える
18

ログ ファイルに対して [自動拡張を有効にする] と [無制限のファイル拡張] の両方を有効にしています? これらは、「データベース プロパティ > ファイル」で SSMS を介して編集できます。

于 2013-07-16T11:21:54.337 に答える
11

これは昔ながらのアプローチですが、長時間実行される SQL で反復的な更新または挿入操作を実行している場合は、「チェックポイント」を定期的に (プログラムで) 呼び出すことをお勧めします。「チェックポイント」を呼び出すと、SQL はメモリのみの変更 (ダーティ ページ、呼び出されます) とトランザクション ログに格納された項目をすべてディスクに書き込みます。これには、トランザクション ログを定期的に消去する効果があり、説明したような問題を防ぐことができます。

于 2013-07-16T12:17:33.910 に答える
1

データベース復旧モデルがいっぱいで、ログ バックアップ メンテナンス プランを持っていない場合は、LOG_BACKUP.

これにより、このデータベースに対するアクション (縮小など) が妨げられ、SQL Server データベース エンジンで 9002 エラーが発生します。

この動作を克服するには、この問題を解決するための詳細な手順を示すLOG_BACKUP により、データベース 'SharePoint_Config' のトランザクション ログがいっぱいになっていることを確認することをお勧めします。

于 2016-07-06T00:04:05.507 に答える