sp_clean_db_file_free_space (Transact-SQL)

Удаляет остаточные данные, оставляемые на страницах базы данных процедурами изменения данных в SQL Server. Хранимая процедура sp_clean_db_file_free_space очищает все страницы в одном файле базы данных.

Значок ссылки на разделСинтаксические обозначения в 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'
    Идентификатор очищаемого файла данных. Аргумент file_number имеет тип int и не может принимать значение NULL.

  • [ @cleaning_delay = ] 'delay_in_seconds'
    Интервал задержки между операциями очистки страниц. Применение задержки помогает уменьшить нагрузку на систему ввода-вывода. Аргумент 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 может оказать существенное отрицательное влияние на работу подсистемы ввода-вывода, поэтому рекомендуется выполнять эту процедуру не в обычное рабочее время.

Перед выполнением хранимой процедуры sp_clean_db_file_free_space рекомендуется создать полную резервную копию базы данных.

Связанная хранимая процедура sp_clean_db_free_space производит очистку всех файлов в базе данных.

Разрешения

Требуется членство в роли базы данных db_owner.

Примеры

В следующем примере выполняется очистка всех остаточных данных в первичном файле данных базы данных AdventureWorks2008R2.

USE Master
GO
EXEC sp_clean_db_file_free_space 
@dbname = N'AdventureWorks2008R2', @fileid = 1 ;