sp_clean_db_file_free_space (Transact-SQL)

適用対象:SQL Server

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'
クリーニングするデータベースの名前です。 dbnamesysname であり、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_free_space (Transact-SQL) を使用します。

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 必要です。

次の例では、データベースのプライマリ データ ファイルからすべての残余情報を AdventureWorks2022 消去します。

USE master;  
GO  
EXEC sp_clean_db_file_free_space @dbname = N'AdventureWorks2022', @fileid = 1;  

参照

データベース エンジン ストアド プロシージャ (Transact-SQL)
ゴースト クリーンアップ プロセス ガイド
sp_clean_db_free_space (Transact-SQL)