次の方法で共有


ファイルの圧縮

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

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

このトピックについて

開始する前に

制限事項と制約条件

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

推奨事項

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

安全

権限

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)