[解決済み] データベースのトランザクションログが満杯です
質問
長時間実行するプロセスがあり、その期間中、トランザクションを開いたままにしています。
私はこれが実行される方法を制御することができません。
トランザクションは全期間開かれたままなので、トランザクションログが一杯になると、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 を解放しましたが、それでもまだそのすべてを使用しており、最終的には失敗しました。
プロセスが夜間に実行されているときは、失敗時にロールバックされていたので、以前はこれが起こっていることに気づきませんでした。 今回は、ロールバック前にログ ファイル サイズを確認することができました。
ご意見ありがとうございました。
どのように解決するのですか?
これは1回限りのスクリプトですか、それとも定期的に発生する仕事ですか?
過去には、ログ ファイル用に一時的に多くの容量を必要とする特別なプロジェクトのために、私は 2 つ目のログ ファイルを作成し、それを巨大なものにしました。プロジェクトが完了したら、余分なログ ファイルを削除しました。
関連
-
[解決済み] データベースのトランザクションログが満杯です。ログの領域が再利用できない理由を調べるには、sys.databases の log_reuse_wait_desc カラムを参照してください。
-
plsql-stored-procedure ORA-06550 エラー処理
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] データベース内の全テーブルのサイズを取得する
-
[解決済み] SQL Serverでテーブルからカラム名を取得するにはどうすればよいですか?
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?
-
[解決済み] Postgres でサブクエリを使用してテーブルの行を更新する
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] LINQでInclude()は何をするのですか?
-
[解決済み] アドホッククエリとは何ですか?
-
[解決済み] テーブルネーミングのジレンマ:単数形と複数形の名前【非公開
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] 最初の行への結合方法
-
[解決済み] SQL ServerでINSERT INTOとしてデータをエクスポートする
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について