sp_clean_db_free_space (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_clean_db_free_space 
[ @dbname ] = 'database_name' 
[ , [ @cleaning_delay = ] 'delay_in_seconds' ] [;]

Аргументы

  • [ @dbname = ] 'database_name'
    Имя базы данных, которая будет очищена. Аргумент dbname имеет тип sysname и не может принимать значение NULL.

  • [ @cleaning_delay = ] 'delay_in_seconds'
    Интервал задержки между операциями очистки страниц. Применение задержки помогает уменьшить нагрузку на систему ввода-вывода. Аргумент delay_in_seconds имеет тип int и значение по умолчанию 0.

Значения кода возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Удаляет операции из таблицы или обновляет операции, которые приводят к перемещению строки, что может немедленно освободить пространство на странице путем удаления ссылок на строку. Но при определенных обстоятельствах строка может физически оставаться на странице данных как фантомная запись. Фантомные записи периодически удаляются фоновым процессом. Эти остаточные данные не возвращаются компоненту Database Engine в ответ на запросы. Но если физическая безопасность данных или файлов резервной копии в рабочей среде подвергается угрозам, то можно использовать процедуру sp_clean_db_free_space для очистки этих фантомных записей.

Продолжительность времени, необходимого для выполнения процедуры sp_clean_db_free_space, зависит от размера файла, доступного свободного пространства и емкости диска. Тем не менее выполнение процедуры sp_clean_db_free_space может оказать существенное отрицательное влияние на работу подсистемы ввода-вывода, поэтому рекомендуется выполнять эту процедуру не в обычное рабочее время.

Рекомендуется создать полную резервную копию базы данных, прежде чем выполнить процедуру sp_clean_db_free_space.

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

Разрешения

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

Примеры

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

USE master
GO
EXEC sp_clean_db_free_space 
@dbname = N'AdventureWorks2008R2' ;