次の方法で共有


sp_clean_db_file_free_space (Transact-SQL)

SQL Server のデータ変更ルーチンのためにデータベース ページに残った残存情報を削除します。 sp_clean_db_file_free_space は、データベースの 1 つのファイルについてのみ、すべてのページをクリーニングします。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

sp_clean_db_file_free_space 
[ @dbname ] = 'database_name' 
, @fileid = 'file_number' 
 [ , [ @cleaning_delay = ] 'delay_in_seconds' ] [;]

引数

  • [ @dbname= ] 'database_name'
    クリーニングするデータベースの名前です。 dbname のデータ型は sysname で、NULL 値は許可されません。

  • [ @fileid= ] 'file_number'
    クリーニングするデータ ファイルの ID です。 file_number のデータ型は int で、NULL 値は許可されません。

  • [ @cleaning\_delay= ] 'delay_in_seconds'
    ページをクリーニングする間隔を指定します。 この値を指定することにより、I/O システムへの影響を低減することができます。 delay_in_seconds のデータ型は int で、既定値は 0 です。

リターン コードの値

0 (成功) または 1 (失敗)

説明

テーブルからの削除操作や、行の移動を伴うような更新操作では、行への参照を削除することにより、直ちにページ上の領域が解放されます。 ただし、特定の状況下では、行がゴースト レコードとして、物理的にデータ ページ上に残ってしまう場合があります。 ゴースト レコードは、バックグラウンド プロセスによって定期的に削除されます。 この残存データが、クエリへの応答としてデータベース エンジンから返されることはありません。ただし、データまたはバックアップ ファイルの物理的なセキュリティに不安があるような環境では、sp_clean_db_file_free_space を使用することで、これらのゴースト レコードをクリーニングすることができます。

sp_clean_db_file_free_space の実行にかかる時間は、ファイルのサイズ、使用可能な空き領域、および、ディスク容量によって異なります。 sp_clean_db_file_free_space プロシージャは、I/O アクティビティに著しく影響する場合があるため、通常の業務時間を避けて実行することをお勧めします。

sp_clean_db_file_free_space を実行する前に、データベースの完全バックアップを作成することをお勧めします。

これに関連したストアド プロシージャとして sp_clean_db_free_space があります。こちらは、データベース内のすべてのファイルがクリーニングの対象になります。

権限

db_owner データベース ロールのメンバーシップが必要です。

使用例

次の例は、AdventureWorks2012 データベースのプライマリ データ ファイルから、すべての残存情報を削除します。

USE Master
GO
EXEC sp_clean_db_file_free_space 
@dbname = N'AdventureWorks2012', @fileid = 1 ;

関連項目

参照

データベース エンジンのストアド プロシージャ (Transact-SQL)