トランザクションログがいっぱいであるとはどういう意味ですか?必要に応じてファイルが20%大きくなるように設定しています。ドライブに4GBが残っています。この問題を永続的に解決するにはどうすればよいですか?これらのコマンドを実行すると、問題が一時的に解決されます。
DBCC SHRINKFILE('MyDatabase_log'、1) TRUNCATE_ONLYを使用したバックアップログMyDatabase DBCC SHRINKFILE('MyDatabase_log'、1)
トランザクションログがいっぱいであるとはどういう意味ですか?必要に応じてファイルが20%大きくなるように設定しています。ドライブに4GBが残っています。この問題を永続的に解決するにはどうすればよいですか?これらのコマンドを実行すると、問題が一時的に解決されます。
DBCC SHRINKFILE('MyDatabase_log'、1) TRUNCATE_ONLYを使用したバックアップログMyDatabase DBCC SHRINKFILE('MyDatabase_log'、1)
トランザクション ログは、SQL サーバーが行ったすべての変更を「記録」する場所であり、何か問題が発生した場合 (ソフトウェア クラッシュから電源障害、小惑星衝突まで、おそらく小惑星衝突ではありません) に「回復」できます。最後の一貫した「チェックポイント」以降に行ったすべての変更を「元に戻す」ことにより、データベースの最後の「一貫した」状態に戻ります...そのチェックポイントで。トランザクションが完了する (または「コミット」する) たびに、トランザクション ログに保存されたすべての変更に「OK」のフラグが付けられ、CheckPopint マーカーをそれらの変更の後に進めることができるため、将来の回復が可能になります。その後のある時点までの変更のみを「元に戻す」だけです。これが起こった後、
他の紳士が述べたように、サーバーに設定した「回復モデル」は、チェックポイントの前からトランザクション ログ エントリに何が起こるかを制御します。シンプル モードでは、チェックポイントが発生すると削除されますが、最後のバックアップ以降にディスクに書き込まれた変更がトランザクション ログに含まれないため、メイン データ ディスクがクラッシュした場合は危険にさらされます。
他のリカバリ モデルでは、バックアップを実行するまでトランザクション ログ エントリは削除されないため、このリスクから保護されます...
したがって、通常、この問題が発生するのは、サーバーが「通常の」(単純ではない) 復旧モデル (増分または完全) のいずれかに設定されており、バックアップを実行していないためです... . この場合、トランザクション ログは成長し続けます...そして成長しています...テレビの前立腺広告のように...
バックアップ戦略が整っていないようです。フル、差分、またはトランザクション ログのいずれかのバックアップを実行すると、ログが切り捨てられ、障害が発生した場合に回復できるポイントを保存できるという利点が追加されます。データベース メンテナンス ウィザードを実行すると、定期的に実行するバックアップのスケジュールを設定するのに役立ちます。
正直なところ、データをまったく気にしない場合 (この場合、なぜデータベースを持っているのだろうかと思います)、データベースの回復モードを「シンプル」に設定すると、TLog がまったく大きくなるのを防ぐことができます。 .
最後に 1 つ: 一括読み込み操作を行っている場合は、一括操作の実行中に "Bulk-Logged" に変更することを検討することもできます。
SQL Server 復旧モデルを確認する必要があります。簡単な答えは、復旧モデルを「シンプル」に変更することですが、これはバックアップ/復旧に影響を与えます。
頻繁にバックアップします。データベースをバックアップするたびに、トランザクション ログが消去されます。
データベースだけでなく、トランザクション ログもバックアップする必要があります。そうしないと、領域がなくなるまでログが大きくなり続けます。
別の簡単な答えは、バックアップがスケジュールされていない可能性があるということです。アップグレード サイクル中に、データベースのバックアップ スケジュールの 1 つがジョブから削除されました。バックアップが実行されていないことがわかるまで、ログは大きくなりました。
20%の成長率はありません。それが成長する必要があるとき、それは大きな結果をもたらす可能性があります。たとえば、100GB に成長した場合、次の成長では 20GB 増加する必要があります。これが発生している間は、システムの速度が低下するように準備してください...むしろ、固定レートに設定します-たとえば 100MB に設定します. もちろん、より正確な推奨を行うための現在のサイズはわかりません。
この問題を解決するには、さまざまな方法があります。バックアップ要件が何であるかによって異なります。
主な問題は、トランザクション ログが定期的にバックアップされていないため、トランザクション ログが増大し続けることです。
SQL Server 2005 にはシンプルリカバリ モード (データベース自体のプロパティ/オプション) があります。これは主に、毎時スナップショットが不要な DEV および TEST 環境で使用します。トランザクション ログは、サーバーで実行される最大のトランザクションを処理するのに十分なだけ大きくなります。 . この復旧モードでは、スケジュールやメンテナンス プランは必要ありません。
SQL Server 2000 では、基本的に、使用したのと同じコマンドを 1 時間ごとに実行するスケジュールされたバックアップ スクリプトがありました。
BACKUP LOG MyDatabase WITH TRUNCATE_ONLY
運用環境では、通常、データベース メンテナンス プランで、1 時間ごとのトランザクション ログ バックアップと 1 日ごとのフル バックアップがスケジュールされています。これにより、トランザクション ログが適切なサイズ (1 時間分のトランザクション データを保持できるサイズ) に切り捨てられます。