web-dev-qa-db-ja.com

dbの使用中にログに対してDBCCSHRINKFILEコマンドを実行するリスクはありますか?

パフォーマンスヒットに対応できます。

新しいインデックスが作成され、大量のログファイルが作成されたため、これも1回限りです。このファイルを縮小する必要があります。

このコマンドを実行するリスクがあるかどうかを知りたかっただけです。

SQL Server2005データベース

3
Spence

安全ですが、トランザクションアクティビティが少ない静かな時間に実行してください。ログを最小サイズに縮小してから通常のサイズに拡大することをお勧めします(これにより、正しい数のVLF(内部仮想ログファイル)が作成され、ログに記録されるコマンドのパフォーマンスが向上します)。

データベースのログが縮小しない場合-データベースがシンプルモードの場合、最初にチェックポイントコマンドを実行し、完全にログに記録されている場合は、最初にログをバックアップします。

ログに未処理のミラーリングトランザクションまたはレプリケーショントランザクションが含まれている場合、最小サイズに縮小されない可能性があります。

適切な自動成長値を設定することを忘れないでください。

次の記事を参照してください。

http://www.sqlskills.com/BLOGS/KIMBERLY/post/8-Steps-to-better-Transaction-Log-throughput.aspx

http://sqlblog.com/blogs/linchi_shea/archive/2009/02/09/performance-impact-a-large-number-of-virtual-log-files-part-i.aspx

1
SuperCoolMoss

また、ログが縮小しない場合のいくつかのポインタ:

  1. トランザクションログをバックアップできます。
  2. 最初にチェックポイント( http://msdn.Microsoft.com/en-us/library/ms188748.aspx )を実行して、すべてのダーティページがディスクに書き込まれ、その後dbccシュリンクファイルを実行することができます。
  3. 複雑なSQL構成(例:その特定のデータベースでのデータベースミラーリング)がない場合は、データベースを単純リカバリに切り替えてから、完全リカバリモードに戻すことができます(これはデータベースの使用中に行うことができます)。確実にデータベースのログファイルを縮小します。
1
Paul

あなたがSQLServer 2000/2005について話していると仮定すると、私は問題なくライブデータベースでそれを行います。

1
PowerApp101

また、アクティブなデータベースのトランスログを縮小します。トランザクションログの非アクティブなチャンクにのみ影響します。

1
squillman

Paul Randallは、ここにかなり詳細なスレッドを持っています。彼のブログにも記事があります:

SQL Serverの自動縮小をオンにしても安全ですか?

それはあなたの正確な質問ではありませんが、DBCCSHRINKFILEが何/どのように機能するかについて追加の光を当てます。

1
KPWINC