SQL Server 2005 で DBCC SHRINKFILE ステートメントを使用してトランザクション ログ ファイルを圧縮する方法

文書翻訳 文書翻訳
文書番号: 907511 - 対象製品
中小企業のお客様は、中小企業向けサポートサイトで問題解決コンテンツや学習リソースもご利用ください。
すべて展開する | すべて折りたたむ

はじめに

Microsoft SQL Server 2005 では、データベース内のトランザクション ログ ファイルを圧縮して未使用のページを削除できます。データベース エンジンにより、領域が効率的に再利用されます。ただし、トランザクション ログ ファイルのサイズが想定していた以上に増大した場合、手動でトランザクション ログ ファイルを圧縮する必要があります。

この資料では、DBCC SHRINKFILE ステートメントを使用して、SQL Server 2005 データベースの完全復旧モデルで、トランザクション ログ ファイルを手動で圧縮する方法について説明します。SQL Server 2005 でトランザクション ログ ファイルの圧縮に使用する方法は、SQL Server 2000 でトランザクション ログ ファイルの圧縮に使用する方法と異なる場合があります。 SQL Server 2000 でトランザクション ログ ファイルを圧縮する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
272318 INF: DBCC による SQL Server 2000 のログ圧縮

詳細

SQL Server 2005 で圧縮操作 (DBCC SHRINKFILE) を実行すると、指定したトランザクション ログ ファイルを必要なサイズに直ちに圧縮する処理が試行されます。完全復旧モデルでトランザクション ログ ファイルを手動で圧縮するには、最初にトランザクション ログ ファイルをバックアップしてから、DBCC SHRINKFILE ステートメントを使用して、トランザクション ログ ファイルを圧縮します。

通常、SQL Server 2005 でのトランザクション ログ ファイルの圧縮は、SQL Server 2000 でのトランザクション ログ ファイルの圧縮より高速です。それは、SQL Server 2005 のログ マネージャでは、物理ディスク記憶域の順序に従って、アクティブでない仮想ログ ファイルの作成または再利用が行われるためです。そのため、通常、トランザクション ログ ファイルのアクティブでない部分は、そのファイルの末尾に位置します。

たとえば、あるトランザクション ログ ファイルに 100 の仮想ログ ファイルがあり、2 つの仮想ログ ファイルのみが使用されているとします。SQL Server 2000 では、最初に使用された仮想ログ ファイルはトランザクション ログ ファイルの先頭に保存され、2 番目に使用された仮想ログ ファイルはトランザクション ログ ファイルの中間に保存されることがあります。トランザクション ログ ファイルを 2 つの仮想ログ ファイルのみに圧縮するため、SQL Server によって 2 番目の仮想ログ ファイルの残りの部分にダミー ログ エントリが設定されます。SQL Server は論理ログの開始位置を、ログ マネージャで指定された、次に使用可能な仮想ログ ファイルに移動します。ログ マネージャは、最後にアクティブだった仮想ログ ファイルのすぐ前、トランザクション ログ ファイルの中間に、仮想ログ ファイルを作成する場合があります。この場合、トランザクション ログ ファイルを 2 つの仮想ログ ファイルに圧縮するには、ログのバックアップ操作および圧縮操作を複数回実行する必要があります。この例で最悪の場合、トランザクション ログ ファイルを 2 つの仮想ログ ファイルに圧縮するために、50 回のログ バックアップ操作と 50 回の圧縮操作を行う必要があります。

しかし SQL Server 2005 では、DBCC SHRINKFILE ステートメントを 1 回実行するだけで、トランザクション ログ ファイルを 2 つの仮想ログ ファイルに直接圧縮できます。これが可能であるのは、SQL Server 2005 ログ マネージャが物理ディスク記憶域の順序に従って 2 つの仮想ログ ファイルを作成するためです。これらの仮想ログ ファイルは共に、トランザクション ログ ファイルの先頭に位置します。

SQL Server 2005 で空き領域のほとんどないトランザクション ログ ファイルを圧縮しようとする場合、ログのバックアップ操作を追加で実行することが必要な場合があります。追加のログ バックアップ操作により、トランザクション ログ ファイルが切り詰められ、ファイルのサイズが小さくなります。このログ バックアップ操作は、SQL Server 2000 でトランザクション ログ ファイルを圧縮するために実行する 3 つの手順とは別です。詳細については、「はじめに」に記載されている「サポート技術情報」 (Microsoft Knowledge Base) の資料を参照してください。SQL Server 2005 で空き領域のほとんどないトランザクション ログ ファイルを圧縮するには、次の手順を実行します。
  1. トランザクション ログ ファイルをバックアップしてほとんどのアクティブな仮想ログ ファイルを非アクティブにします。これにより、アクティブでない仮想ログ ファイルは後の手順で削除できます。これを行うには、次のような Transact-SQL ステートメントを実行します。
    BACKUP LOG <DatabaseName> TO DISK = '<BackupFile>'
    : このステートメント内の <DatabaseName> は、バックアップするデータベース名に置き換えます。<BackupFile> は、バックアップ ファイルの完全なパスに置き換えます。

    たとえば、次の Transact-SQL ステートメントを実行します。
    BACKUP LOG TestDB TO DISK='C:\TestDB1.bak'
  2. トランザクション ログ ファイルを圧縮します。これを行うには、次のような Transact-SQL ステートメントを実行します。
    DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS
    : このステートメント内の <FileName> は、トランザクション ログ ファイルの名前に置き換えます。<TargetSize> は、トランザクション ログ ファイルの圧縮後のサイズに置き換えます。このサイズは合理的な数値にする必要があります。たとえば、トランザクション ログ ファイルを 2 つの仮想ログ ファイルのサイズより小さいサイズに圧縮することはできません。
  3. DBCC SHRINKFILE ステートメントによりトランザクション ログ ファイルが目標のサイズに圧縮されない場合は、手順 1. に記載されている BACKUP LOG ステートメントを実行して、アクティブでない仮想ログ ファイルを増やします。
  4. 手順 2. に記載されている DBCC SHRINKFILE ステートメントを実行します。この操作後、トランザクション ログ ファイルのサイズは目標サイズに近づきます。
要約すると、次の仮想ログ ファイルを選択するログ マネージャのアルゴリズムは SQL Server 2005 で変更されました。そのため、SQL Server 2005 のトランザクション ログ ファイルの圧縮方法は、SQL Server 2000 のトランザクション ログ ファイルの圧縮方法と異なる場合があります。
  • ログ ファイルに空き領域がたくさんあれば、SQL Server 2005 でのトランザクション ログ ファイルの圧縮は、SQL Server 2000 でのトランザクション ログ ファイルの圧縮より高速です。
  • ログ ファイルに空き領域がなければ、SQL Server 2005 でのトランザクション ログ ファイルの圧縮は、SQL Server 2000 でのトランザクション ログ ファイルの圧縮と同じです。
  • ログ ファイルに空き領域がほとんどなければ、SQL Server 2005 では、SQL Server 2000 の場合より多くのログのバックアップ操作を実行することが必要な場合があります。

関連情報

詳細については、Microsoft SQL Server 2005 Books Online の以下のトピックを参照してください。
  • トランザクション ログの圧縮
  • DBCC SHRINKFILE (Transact-SQL リファレンス)
  • トランザクション ログの切り捨て

プロパティ

文書番号: 907511 - 最終更新日: 2013年7月16日 - リビジョン: 3.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
キーワード:?
kbsqlmanagementtools kbsql2005engine kbinfo KB907511
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com