次の方法で共有


ファイルの圧縮

このトピックでは、SQL Server Management Studioまたは Transact-SQL を使用して、SQL Server 2014 でデータまたはログ ファイルを圧縮する方法について説明します。

ファイルの末尾にあるデータのページを、ファイルの先頭に近い占有されていない領域に移動することにより、データ ファイルが圧縮され、領域が回復されます。 ファイル末尾に十分な空き領域が作成された場合は、ファイル末尾のデータ ページの割り当てを解除して、ファイル システムに戻すことができます。

このトピックの内容

はじめに

制限事項と制約事項

  • プライマリ データ ファイルは、model データベースのプライマリ ファイルのサイズより小さくすることはできません。

推奨事項

  • ファイルを圧縮するために移動されたデータは、ファイル内のあらゆる使用可能な場所に分散される場合があります。 これにより、インデックスの断片化が発生し、広範なインデックスを検索するクエリのパフォーマンスが低下する場合があります。 断片化を解消するには、圧縮後にファイルのインデックスを再構築することを検討してください。

Security

アクセス許可

sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバーシップが必要です。

SQL Server Management Studio を使用する

データ ファイルまたはログ ファイルを圧縮するには

  1. オブジェクト エクスプローラーで、 SQL Server データベース エンジン のインスタンスに接続し、そのインスタンスを展開します。

  2. [データベース] を展開し、圧縮するデータベースを右クリックします。

  3. [タスク][圧縮] の順にポイントし、 [ファイル] をクリックします。

    [データベース]
    選択しているデータベースの名前が表示されます。

    ファイルの種類
    ファイルの種類を選択します。 選択できるファイルの種類は [データ] および [ログ] です。 既定の選択は [データ] です。 別のファイル グループの種類を選択すると、その選択に応じて他のフィールドの選択が変更されます。

    [ファイル グループ]
    上記で選択した [ファイルの種類] に関連付けられたファイル グループの一覧から、ファイル グループを選択します。 別のファイル グループを選択すると、その選択に応じて他のフィールドの選択が変更されます。

    [ファイル名]
    選択したファイル グループおよびファイルの種類で利用可能なファイルの一覧からファイルを選択します。

    場所
    現在選択されているファイルへの完全なパスを表示します。 このパスは編集できませんが、クリップボードにコピーできます。

    [現在割り当てられている領域]
    データ ファイルの場合は、現在割り当てられている領域が表示されます。 ログ ファイルの場合は、DBCC SQLPERF(LOGSPACE) の出力から計算された、現在割り当てられている領域が表示されます。

    [使用可能な空き領域]
    データ ファイルの場合は、DBCC SHOWFILESTATS(fileid) の出力から計算された、現在使用できる空き領域が表示されます。 ログ ファイルの場合は、DBCC SQLPERF(LOGSPACE) の出力から計算された、現在使用できるスペースが表示されます。

    [未使用領域を解放する]
    ファイル内のすべての未使用領域をオペレーティング システムに渡し、ファイルを最後に割り当てられたエクステントにまで圧縮して、データをまったく移動せずにファイル サイズを小さくします。 割り当てられていないページへの行の再割り当て処理は行われません。

    [未使用領域の解放前にページを再構成する]
    対象ファイルのサイズを指定して DBCC SHRINKFILE を実行することと同じです。 このオプションがオンになっている場合は、 [圧縮先のファイル] ボックスで対象ファイルのサイズを指定する必要があります。

    [圧縮先のファイル]
    圧縮操作の対象ファイルのサイズを指定します。 サイズは、現在割り当てられている領域より大きく、ファイルに割り当てられた合計エクステントよりも小さくする必要があります。 最小値または最大値の範囲外の値を入力した場合、フォーカスを変更したり、ツール バーのボタンをクリックしたりしたときに、入力した値が最小値または最大値に戻ります。

    [データを同じファイル グループの他のファイルに移行してファイルを空にする]
    指定したファイルからすべてのデータを移行します。 このオプションを使用すると、ALTER DATABASE ステートメントを使用してファイルを削除することができます。 このオプションは、EMPTYFILE オプションを指定して DBCC SHRINKFILE を実行することと同じです。

  4. ファイルの種類とファイル名を選択します。

  5. 必要に応じて、 [未使用領域を解放する] をオンにします。

    このオプションをオンにすると、ファイル内の未使用領域がオペレーティング システムに解放され、最後に割り当てられたエクステントにファイルが圧縮されます。 これにより、データを移動しなくてもファイル サイズが減少します。

  6. 必要に応じて、 [未使用領域の解放前にファイルを再構成する] をオンにします。 このオプションをオンにする場合は、 [圧縮先のファイル] の値を指定する必要があります。 既定では、このオプションはオフになっています。

    このオプションをオンにすると、ファイル内の未使用領域がオペレーティング システムに解放され、未割り当てページに行の再割り当てを試みます。

  7. 必要に応じて、データベースを圧縮した後に、データベース ファイル内に残す空き領域の最大のパーセンテージを入力します。 0 ~ 99 の値を指定できます。 このオプションは、 [未使用領域の解放前にファイルを再構成する] がオンになっている場合にのみ使用できます。

  8. 必要に応じて、 [データを同じファイル グループの他のファイルに移行してファイルを空にする] をオンにします。

    このオプションをオンにすると、指定したファイルのすべてのデータが同じファイル グループの他のファイルに移動されます。 その後、空になったファイルを削除できます。 このオプションは、EMPTYFILE オプションを指定して DBCC SHRINKFILE を実行するのと同じ効果があります。

  9. [OK] をクリックします。

Transact-SQL の使用

データ ファイルまたはログ ファイルを圧縮するには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。 この例では、 DBCC SHRINKFILE を使用して、 UserDB データベースに存在する DataFile1 という名前のデータ ファイルのサイズを 7 MB に圧縮します。

USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO

参照

DBCC SHRINKDATABASE (Transact-SQL)
データベースの圧縮
データまたはログ ファイルのデータベースからの削除
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)