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