web-dev-qa-db-ja.com

SQLServerデータベースを縮小する

私のSQLServer 2008データベースファイル(.mdf)ファイルはほぼ24 MBですが、ログファイルは15GBまで大きくなりました。データベースを縮小したい場合、考慮すべき重要なポイントは何ですか?

縮小するとインデックスの断片化が発生し、データベースのパフォーマンスに影響しますか?

3
hani

問題は、トランザクションログでバックアップを行っていないため、ログに値をドロップできないことです。これはデータベースのバックアップとは異なり、毎日最低でも実行する必要があります(15分ごとに実行します)。これを修正するまで、縮小してもまったく効果がありません。

トランザクションログのバックアップに関するオンラインブックのセクションをお読みください。これは、完全または一括ログ回復モデルを使用している場合に必要なアクションです。トランザクションログの縮小に関するセクションもお読みください。これは、製品データベースがある場合に知っておく必要のある重要な情報です。

6
HLGEM

このデータベースのトランザクションログバックアップを作成し、必要に応じて、そのデータベースのログファイルを縮小することをお勧めします。

1

まず、それは生産環境ですか?実稼働環境では、完全復旧モデルをお勧めします

ファイルレベルまたはデータベースレベルでいつでも縮小できます。個人的には、縮小する前に常にログバックアップを作成するため、リカバリが必要な場合はバックアップしておく必要があります。

ログをバックアップせずに縮小するとリスクが生じる可能性があります。トランザクションログには、データベースに対して行われたすべての操作が含まれているため、以前の状態を復元できます(完全復旧モードについて説明します)。縮小してもログサイズの削減に役立たない場合があります。バックアップを作成していない場合、空き領域は利用できません。表示される領域は、データベースが実際に使用しているものとは限らず、予約されているだけです。

インデックスの断片化は発生せず、テーブルに新しいデータを挿入するとインデックスの断片化が発生します。パフォーマンスのために、縮小しながら作業している可能性がありますが、データベースまたはファイル自体を縮小すると、サーバーリソースが消費されます。サーバー全体の負荷が増加するため、操作時間を短縮またはバックアップすることをお勧めします。

それが役に立てば幸い

0
jgemedina