sp_clean_db_file_free_space (Transact-SQL)
SQL Server のデータ変更ルーチンのためにデータベース ページに残った残存情報を削除します。sp_clean_db_file_free_space は、データベースの 1 つのファイルについてのみ、すべてのページをクリーニングします。
構文
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 データベース ロールのメンバシップが必要です。
例
次の例は、AdventureWorks データベースのプライマリ データ ファイルから、すべての残存情報を削除します。
USE Master
GO
EXEC sp_clean_db_file_free_space
@dbname = N'AdventureWorks', @fileid = 1 ;