次の方法で共有


sp_clean_db_file_free_space (Transact-SQL)

適用対象: 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'
クリーニングするデータベースの名前です。 dbnamesysname で NULL にすることはできません。

@fileid = 'file_number'
クリーンアップするデータ ファイル ID です。 file_numberint で NULL にすることはできません。

@cleaning_delay = 'delay_in_seconds'
ページをクリーニングする間隔を指定します。 これにより、I/O システムへの影響を軽減できます。 delay_in_secondsint 既定値は 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)