次の方法で共有


sp_clean_db_file_free_space(Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

データページの残留情報を削除します。 sp_clean_db_file_free_space は、データベースの 1 つのファイル内のすべてのページをクリーンアップします。

Transact-SQL 構文表記規則

構文

sp_clean_db_file_free_space
    [ @dbname = ] N'dbname'
    , [ @fileid = ] fileid
    [ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]

引数

[ @dbname = ] N'dbname'

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

[ @fileid = ] fileid

クリーンアップするデータ ファイル ID。 @fileidint で、既定値はありません。

[ @cleaning_delay = ] cleaning_delay

各ページのクリーンアップまでの間隔を秒単位で指定します。 @cleaning_delayint で、既定値は 0 です。 この遅延により、クリーンアッププロセスの時間を延ばす代わりに、I/Oシステムの負荷が軽減されます。

リターン コードの値

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

解説

sp_clean_db_file_free_spaceシステムのストアドプロシージャは、ゴーストされたレコードを含むページ上のすべての行をページの先頭に移動させ、その後ページ上の残りのデータ空間をゼロ初期化します。 データファイルや基盤となるストレージの物理的なセキュリティが危険にさらされる環境では、このストアドプロシージャを使って、データファイルやストレージに残る削除データが一切残らないことを確認できます。

sp_clean_db_file_free_spaceの実行に必要な時間は、データファイルのサイズ、ファイル内で使用されるページ数、ディスクのI/O能力によって異なります。 sp_clean_db_file_free_spaceの実行はI/O活動を大幅に増加させるため、通常の営業時間外で行うことを推奨します。

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

この操作をデータベース内のすべてのデータファイルに対して行うには 、sp_clean_db_free_spaceを使用します。

アクセス許可

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

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

USE master;
GO

EXECUTE sp_clean_db_file_free_space
    @dbname = N'AdventureWorks2022',
    @fileid = 1;