sp_clean_db_free_space (Transact-SQL)

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

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

構文

sp_clean_db_free_space 
[ @dbname ] = 'database_name' 
[ , [ @cleaning_delay = ] 'delay_in_seconds' ] [;]

引数

  • [ @dbname = ] 'database_name'
    クリーニングするデータベースの名前です。dbname のデータ型は sysname で、NULL を指定することはできません。

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

リターン コードの値

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

説明

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

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

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

これに関連したストアド プロシージャとして sp_clean_db_file_free_space があります。こちらは、1 つのファイルのクリーニング用です。

権限

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

次の例は、AdventureWorks データベースから、すべての残存情報を削除します。

USE master
GO
EXEC sp_clean_db_free_space 
@dbname = N'AdventureWorks' ;