sp_clean_db_free_space (Transact-SQL)
适用于:SQL Server
由于 SQL Server 中的数据修改例程,删除数据库页上留下的残差信息。 sp_clean_db_free_space清理数据库的所有文件中的所有页面。
语法
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 为 默认值为 0 的 int 。
返回代码值
0(成功)或 1(失败)
备注
从表中删除操作或更新操作,导致行移动的操作可以通过删除对行的引用来立即释放页面上的空间。 但是,在某些情况下,该行可以物理保留在数据页上作为虚影记录。 后台进程定期删除虚影记录。 数据库引擎不会返回此残差数据以响应查询。 但是,在数据或备份文件的物理安全性处于危险状态的环境中,可以使用 sp_clean_db_free_space
这些虚影记录来清理这些虚影记录。 若要对数据库文件执行此操作,请使用 sp_clean_db_file_free_space (Transact-SQL)。
运行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
身份。
示例
以下示例从 AdventureWorks2022
数据库清理所有残差信息。
USE master;
GO
EXEC sp_clean_db_free_space @dbname = N'AdventureWorks2022';
另请参阅
数据库引擎存储过程 (Transact-SQL)
虚影清理过程指南
sp_clean_db_file_free_space (Transact-SQL)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈