sp_clean_db_file_free_space(Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

去除数据页上的残留信息。 sp_clean_db_file_free_space 仅清除数据库一个文件中的所有页面。

Transact-SQL 语法约定

语法

sp_clean_db_file_free_space
    [ @dbname = ] N'dbname'
    , [ @fileid = ] fileid
    [ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]

参数

[ @dbname = ] N'dbname'

要清理的数据库的名称。 @dbname为 sysname,无默认值。

[ @fileid = ] 文件

要清理的数据文件 ID。 @fileid为 int,无默认值。

[ @cleaning_delay = ] cleaning_delay

指定每个页面清理前的延迟间隔,以秒为单位。 @cleaning_delay为 int,默认值为 0. 这种延迟有助于减轻I/O系统的负载,但代价是延长清理过程的时间。

返回代码值

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数据库角色的成员身份。

示例

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

USE master;
GO

EXECUTE sp_clean_db_file_free_space
    @dbname = N'AdventureWorks2022',
    @fileid = 1;