sp_clean_db_free_space (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン)

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

Topic link iconTransact-SQL 構文表記規則

構文

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

引数

@dbname = '@dbname'
クリーニングするデータベースの名前です。 dbnamesysname であり、NULL にすることはできません。

@cleaning_delay = '@cleaning_delay'
ページをクリーニングする間隔を指定します。 これにより、i/o システムへの影響が軽減されます。 delay_in_secondsint で、既定値は0です。

リターン コードの値

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

解説

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

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

次の例では、データベースからすべての残存情報を AdventureWorks2012 消去します。

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

参照

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