共用方式為


sp_clean_db_file_free_space (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

移除資料頁面上的殘留資訊。 sp_clean_db_file_free_space 只會清除資料庫一個檔案中的所有頁面。

Transact-SQL 語法慣例

語法

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

引數

[ @dbname = ] N'dbname'

要清除的資料庫名稱。 @dbname為 sysname,沒有預設值。

[ @fileid = ] 檔案

要清除的數據文件識別碼。 @fileid為 int,沒有預設值。

[ @cleaning_delay = ] cleaning_delay

指定每頁清理前的延遲間隔,以秒為單位。 @cleaning_delay為 int,預設值為 0。 這種延遲有助於減輕輸入輸出系統的負載,但代價是延長清理過程的時間。

傳回碼值

0 (成功) 或 1 (失敗)。

備註

sp_clean_db_file_free_space系統儲存程序會將頁面上的所有列(包括被重影記錄的紀錄(如有的話)移動到頁面開頭,然後對頁面上剩餘的資料空間進行零初始化。 在資料檔案或底層儲存的物理安全性受到威脅的環境中,你可以使用此儲存程序確保資料檔案或儲存中沒有殘留的已刪除資料。

執行 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資料庫角色的成員資格。

範例

下列範例會從資料庫的主要數據檔 AdventureWorks2025 清除所有剩餘資訊。

USE master;
GO

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