トランザクションを開いたままにしておく長時間のプロセスがあります。
これを実行する方法を制御できません。
トランザクションは全期間開いたままになっているため、トランザクションログがいっぱいになると、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
"を保持しました。
Microsoftによると:http : //msdn.microsoft.com/en-us/library/ms345414(v=sql.105).aspx
つまり、次のことを意味します。
トランザクションがアクティブです(すべての復旧モデル)。•ログバックアップの開始時に、長時間実行されているトランザクションが存在する可能性があります。この場合、スペースを解放するには、別のログバックアップが必要になる場合があります。詳細については、このトピックで後述する「長時間実行されるアクティブトランザクション」を参照してください。
•トランザクションは遅延されます(SQL Server 2005 Enterprise Edition以降のバージョンのみ)。遅延トランザクションは、リソースが使用できないためにロールバックがブロックされるアクティブなトランザクションです。遅延トランザクションの原因と、それらを遅延状態から移動する方法については、遅延トランザクションを参照してください。
私は何かを誤解しましたか?
-=-=-=-更新2-=-=-=-
最初のログファイルサイズを30GBに設定してプロセスを開始しました。完了するまでに数時間かかります。
-=-=-=-最終更新-=-=-=-
この問題は実際には、ログファイルが使用可能なすべてのディスク領域を消費していることが原因でした。最後の試みで私は120GBを解放しましたが、それでもすべてを使用し、最終的に失敗しました。
プロセスが夜間に実行されていたときに、障害が発生するとロールバックされていたため、これが以前に発生していることに気付きませんでした。今回は、ロールバック前にログファイルのサイズを確認できました。
ご協力ありがとうございます。