次の方法で共有


sp_clean_db_free_space (Transact-SQL)

適用対象: SQL Server

SQL Server のデータ変更ルーチンにより、データベース ページに残っている残余情報を削除します。 sp_clean_db_free_space は、データベースのすべてのファイル内のすべてのページをクリーンアップします。

Transact-SQL 構文表記規則

構文

sp_clean_db_free_space
    [ @dbname = ] N'dbname'
    [ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]

引数

[ @dbname = ] N'dbname'

消去するデータベースの名前。 @dbnamesysname で、既定値はありません。

[ @cleaning_delay = ] cleaning_delay

ページをクリーニングする間隔を指定します。 @cleaning_delayint で、既定値は 0 です。 この遅延は、I/O システムへの影響を軽減するのに役立ちます。

リターン コードの値

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

解説

テーブルからの削除操作または行の移動を引き起こす更新操作は、行への参照を削除することで、ページの領域をすぐに解放できます。 ただし、特定の状況下では、行がゴースト レコードとして、物理的にデータ ページ上に残ってしまう場合があります。 バックグラウンド プロセスでは、ゴースト レコードが定期的に削除されます。 この残差データは、クエリに応答してデータベース エンジンによって返されません。 ただし、データまたはバックアップ ファイルの物理的なセキュリティが危険にさらされている環境では、 sp_clean_db_free_space を使用してこれらのゴースト レコードをクリーンアップできます。 データベース ファイルごとにこの操作を実行するには、 sp_clean_db_file_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 データベース ロールのメンバーシップが必要です。

次の例では、 AdventureWorks2022 データベースのすべての残余情報を消去します。

USE master;
GO

EXEC sp_clean_db_free_space @dbname = N'AdventureWorks2022';