sp_clean_db_file_free_space (Transact-SQL)
適用於:SQL Server
拿掉資料庫頁面上剩餘的信息,因為 SQL Server 中的數據修改例程。 sp_clean_db_file_free_space
只會清除資料庫一個檔案中的所有頁面。
語法
sp_clean_db_file_free_space
[ @dbname = ] N'dbname'
, [ @fileid = ] fileid
[ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]
引數
[ @dbname = ] N'dbname'
要清除的資料庫名稱。 @dbname為 sysname,沒有預設值。
[ @fileid = ] fileid
要清除的數據文件識別碼。 @fileid為 int,沒有預設值。
[ @cleaning_delay = ] cleaning_delay
指定在清除頁面之間延遲的間隔。 @cleaning_delay為 int,預設值為 0
。 此延遲有助於降低 I/O 系統的影響。
傳回碼值
0
(成功) 或 1
(失敗)。
備註
從數據表或更新作業中刪除導致數據列移動的作業,可以藉由移除數據列的參考,立即釋放頁面上的空間。 不過,在某些情況下,數據列可以實際保留在數據頁面上做為準刪除記錄。 背景程式會定期移除准刪除記錄。 回應查詢時,資料庫引擎 不會傳回此剩餘數據。 不過,在數據或備份文件的實際安全性處於風險的環境中,您可以使用 sp_clean_db_file_free_space
來清除這些准刪除記錄。 若要針對所有資料庫檔案一次執行這項作業,請使用 sp_clean_db_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資料庫角色的成員資格。
範例
下列範例會從資料庫的主要數據檔 AdventureWorks2022
清除所有剩餘資訊。
USE master;
GO
EXEC sp_clean_db_file_free_space
@dbname = N'AdventureWorks2022',
@fileid = 1;