次の方法で共有


トランザクション ログ ファイルのサイズを管理する

場合によっては、SQL Server データベースのトランザクション ログの物理ログ ファイルを物理的に圧縮または拡張すると便利な場合があります。 このトピックでは、SQL Server トランザクション ログのサイズの監視、トランザクション ログの圧縮、トランザクション ログ ファイルの追加または拡大、 tempdb トランザクション ログの増加率の最適化、トランザクション ログ ファイルの拡張の制御を行う方法について説明します。

ログ領域の使用を監視する

DBCC SQLPERF (LOGSPACE) を使用してログ領域の使用を監視できます。 このコマンドは、現在使用されているログ領域の量に関する情報を返し、トランザクション ログで切り捨てが必要な場合を示します。 詳細については、 DBCC SQLPERF (Transact-SQL) を参照してください。 ログ ファイルの現在のサイズ、最大サイズ、およびファイルの自動拡張オプションについては、そのログ ファイルの サイズmax_size拡張 列を sys.database_filesで使用することもできます。 詳しくは「sys.database_files (Transact-SQL)」をご覧ください。

重要

ログ ディスクのオーバーロードは避けてください。

ログ ファイルのサイズを縮小する

物理ログ ファイルの物理サイズを小さくするには、ログ ファイルを圧縮する必要があります。 これは、トランザクション ログ ファイルに不要な未使用の領域が含まれていることがわかっている場合に便利です。 ログ ファイルの圧縮は、データベースがオンラインの間にのみ発生し、少なくとも 1 つの仮想ログ ファイルは無料です。 場合によっては、次のログの切り捨てが完了するまで、ログを圧縮できないことがあります。

実行時間の長いトランザクションなど、仮想ログ ファイルを長期間アクティブに保つ要因は、ログの収縮を制限したり、ログが縮小するのをまったく防いだりする可能性があります。 ログの切り捨てを遅らせる要因については、「 トランザクション ログ (SQL Server)」を参照してください。

ログ ファイルを圧縮すると、論理ログの一部を保持していない 1 つ以上の 仮想ログ ファイル (つまり、非アクティブな仮想ログ ファイル) が削除されます。 トランザクション ログ ファイルが圧縮されると、ログ ファイルの末尾から十分な非アクティブな仮想ログ ファイルが削除され、ログが約ターゲット サイズに縮小されます。

ログ ファイルを圧縮するには (データベース ファイルを圧縮せずに)

ログ ファイルの圧縮イベントを監視するには

To monitor log space

データベースとログ ファイルの圧縮は、自動的に行われるよう設定できます。 ただし、自動圧縮はお勧めしません。autoshrink データベース プロパティは既定で FALSE に設定されています。 autoshrinkが TRUE に設定されている場合、自動圧縮では、領域の 25% を超える領域が使用されていない場合にのみ、ファイルのサイズが小さくなります。 ファイルは、ファイル領域の 25% のみが未使用領域になるサイズ、またはファイルの元のサイズの、どちらか大きい方のサイズまで圧縮されます。 autoshrinkプロパティの設定を変更する方法については、「データベースのプロパティを表示または変更する」を参照してください。[オプション] ページまたは ALTER DATABASE SET オプション (Transact-SQL) の [自動圧縮] プロパティを使用して、AUTO_SHRINKオプションを使用します。

ログ ファイルを追加または拡大する

または、既存のログ ファイルを拡大するか (ディスク領域が許可されている場合)、ログ ファイルをデータベース (通常は別のディスク) に追加することで、領域を増やすことができます。

  • データベースにログ ファイルを追加するには、ALTER DATABASE ステートメントの ADD LOG FILE 句を使用します。 ログ ファイルを追加すると、ログを拡大できます。

  • ログ ファイルを拡大するには、ALTER DATABASE ステートメントの MODIFY FILE 句を使用し、SIZE 構文と MAXSIZE 構文を指定します。 詳細については、「 ALTER DATABASE (Transact-SQL)」を参照してください。

tempdb トランザクション ログのサイズを最適化する

サーバー インスタンスを再起動すると、 tempdb データベースのトランザクション ログのサイズが、元の自動拡張前サイズに変更されます。 これにより、 tempdb トランザクション ログのパフォーマンスが低下する可能性があります。 サーバー インスタンスの起動または再起動後に tempdb トランザクション ログのサイズを大きくすることで、このオーバーヘッドを回避できます。 詳細については、「 tempdb データベース」を参照してください。

トランザクション ログ ファイルの拡張を制御する

ALTER DATABASE (Transact-SQL) ステートメントを使用して、トランザクション ログ ファイルの拡張を管理できます。 次の点に注意してください。

  • 現在のファイル サイズを KB、MB、GB、および TB 単位で変更するには、SIZE オプションを使用します。

  • 成長の増加量を変更するには、FILEGROWTH オプションを使用します。 0 は、自動拡張がオフで、領域を追加できないことを示します。 ログ ファイルの自動拡張の増分を小さくすると、パフォーマンスが低下する可能性があります。 ログ ファイルの拡張増分値は、拡張を頻繁に行わなくても済むように十分な大きさにする必要があります。 通常、10% の既定の増加増分が適しています。

    ログ ファイルのファイル拡張プロパティの変更については、 ALTER DATABASE (Transact-SQL) を参照してください。

  • ログ ファイルの最大サイズを KB、MB、GB、TB 単位で制御したり、拡張を UNLIMITED に設定したりするには、MAXSIZE オプションを使用します。

こちらもご覧ください

BACKUP (Transact-SQL)
満杯になったトランザクション ログのトラブルシューティング (SQL Server エラー 9002)