Поделиться через


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.

Примеры

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

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

См. также

Справочник

Хранимые процедуры ядра СУБД (Transact-SQL)