データベースのログ ファイルがいっぱいです
-
09-06-2019 - |
質問
そのため、SQL Server 2000 で「データベースのログ ファイルがいっぱいです。」というエラーが表示されます。データベースのトランザクション ログをバックアップして、ログ領域を解放してください。」
他のサイトで述べられているように、ログを削除せずにこれを修正するにはどうすればよいですか?
追加情報:[AutoGrowth を有効にする] は 10% ずつ拡張することが有効になり、40MB に制限されます。
解決
スコット、ご想像のとおり、データを重視する場合、ログを切り捨てるのは悪い選択です。
次の無料ビデオは、何が起こっているかを正確に確認するのに役立ち、ログを切り詰めずに問題を解決する方法を示します。(これらのビデオでは、なぜそれがそれほど危険なハッキングなのか、そしてなぜ別の解決策を探すのが正しいのかについても説明しています。)
これらのビデオは、何が起こっているのかを正確に理解するのに役立ち、SIMPLE リカバリに切り替えるか、実際にバックアップ ルーチンの変更を検討するかを示します。また、ログ ファイルのサイズと増加を管理しながら可用性を確保するためにバックアップをセットアップする方法を正確に説明する追加の「ハウツー」ビデオもいくつかあります。
他のヒント
単に空にするには:
backup log <dbname> with truncate_only
どこかに保存するには:
backup log <dbname> to disk='c:\somefile.bak'
トランザクション履歴が本当に必要ない場合は、データベース回復モードを単純に設定してみてください。
直前まで回復する必要がある場合や、将来的にログ配布などの他の楽しい作業を行う必要がある場合は、データベース ログを定期的にバックアップするか、データベースをシンプル モードに設定してデータ ファイルを圧縮します。
.ldf ファイルをコピー、名前変更、または削除しないでください。これによりデータベースが破損します。また、そこから回復した後、データが不整合な状態になり無効になる可能性があります。
データベースがオンラインになっている間は、ログ ファイルの名前変更や移動は機能しないと思います。
IMO によると、最も簡単な方法は、データベースのプロパティを開いて単純復旧モデルに切り替えることです。次にデータベースを縮小し、戻って DB を完全回復モデル (または必要なモデル) に設定します。
ログ モードを変更すると、SQL Server はデータベースにチェックポイントを設定し、その後データベースを縮小すると余分な領域が解放されます。
過去にこのエラーに直面した私の友人は、次のように勧めています。
試す
- DBをバックアップしています。メンテナンス プランには、これらのファイルの切り詰めが含まれています。
- また、DB の「回復モード」を次のように変更してみてください。 単純 (の代わりに 満杯 例えば)
原因:トランザクション ログは、ログに記録されるイベントによって増大します (おそらく、多数のトランザクションが失敗してロールバックされていると思われます)。またはサーバー上のトランザクションの突然のピーク)
関連する SO の質問を確認してください。
トランザクション ログのコピーを取得してから、ログ ファイルを切り詰めることもできますが、これがエラー メッセージの示唆するところです。
ディスク容量がいっぱいで、ネットワーク経由で別のマシンにログをコピーできない場合は、USB 経由でドライブを接続し、その方法でログをコピーします。
あなたの質問には次のような答えがあります。ログをバックアップすると、圧縮されます。データベースを定期的にバックアップするメンテナンス計画を立て、[トランザクション ログをバックアップする] を選択することを忘れないでください。そうすれば小さく保てますよ。
それが 非 本番環境での使用
dump tran <db_name> with no_log;
これが完了したら、ログ ファイルを圧縮してディスク領域を解放します。最後に、データベース回復モードをシンプルに切り替えます。
データベースの完全バックアップを作成し、データベースが単純復旧モデルを使用していない場合、SQL Server はデータベース上でこれまでに実行されたすべてのトランザクションの完全な記録を保持します。これにより、データ ファイルを失う致命的な障害が発生した場合に、ログをバックアップすることで障害発生時点まで復元でき、古いデータ バックアップを復元したら、ログを復元して失われたファイルを再生できます。取引。
この蓄積を防ぐには、トランザクション ログをバックアップする必要があります。または、BACKUP LOG の TRUNCATE_ONLY または NO_LOG オプションを使用して、現在の時点でチェーンを切断できます。
この機能が必要ない場合は、復旧モデルを [シンプル] に設定します。
親愛なる友人、DBA にとってログ ファイルを頻繁にチェックすることは非常に重要です。なぜなら、あまり注意を払わないと、いつかこのエラーが発生するからです。
この目的のために、ログ ファイルにこのようなエラーが発生しないように、定期的にバックアップを作成する必要があります。
これ以外の点では、上記の提案はまったく正しいです。
名前を変更します。例えば:
古いログ-16-09-08.log
その後、SQL サーバーは新しい空のサーバーを使用できるようになります。