sp_clean_db_file_free_space (Transact-SQL)
在資料庫頁面上移除由於 SQL Server 中資料修改例行工作所剩餘的資訊。 sp_clean_db_file_free_space 只會清除資料庫的一個檔案中的所有頁面。
語法
sp_clean_db_file_free_space
[ @dbname ] = 'database_name'
, @fileid = 'file_number'
[ , [ @cleaning_delay = ] 'delay_in_seconds' ] [;]
引數
[ @dbname= ] 'database_name'
這是要清除的資料庫名稱。 dbname 是 sysname,且不能是 NULL。[ @fileid= ] 'file_number'
這是要清除的資料檔案識別碼。 file_number 是 int,且不能是 NULL。[ @cleaning\_delay= ] 'delay_in_seconds'
指定頁面清除之間的延遲間隔。 如此有助於減少對 I/O 系統的影響。 delay_in_seconds 是 int,預設值為 0。
傳回碼值
0 (成功) 或 1 (失敗)
備註
資料表中的刪除作業或是造成資料列移動的更新作業可以立即釋放頁面上的空間,其方式是移除資料列的參考。 但是在某些情況下,此資料列可以當做準刪除記錄實際存留在資料頁上。 背景處理序會定期移除準刪除記錄。 Database Engine 不會為了回應查詢而傳回這項剩餘資料。但是在資料或備份檔案的實體安全性有風險的環境中,您可以使用 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 資料庫角色中的成員資格。
範例
下列範例會從 AdventureWorks2012 資料庫的主要資料檔中清除所有剩餘資訊。
USE Master
GO
EXEC sp_clean_db_file_free_space
@dbname = N'AdventureWorks2012', @fileid = 1 ;