sp_clean_db_file_free_space (Transact-SQL)

删除因 SQL Server 数据修改例程而留在数据库页上的残留信息。 sp_clean_db_file_free_space 仅清除数据库的一个文件中的所有页。

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

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'
    要清理的数据文件 ID。 file_number 的数据类型为 int,且不能为 NULL。

  • [ @cleaning\_delay= ] 'delay_in_seconds'
    指定各次页清理之间的延迟间隔。 这会有助于减轻对 I/O 系统的影响。 delay_in_seconds 的数据类型为 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 数据库角色的成员身份。

示例

下面的示例从 AdventureWorks2012 数据库的主数据文件中清除所有残留信息。

USE master;
GO
EXEC sp_clean_db_file_free_space 
@dbname = N'AdventureWorks2012', @fileid = 1 ;

请参阅

参考

数据库引擎存储过程 (Transact-SQL)