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


sp_clean_db_file_free_space (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в 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.

Примеры

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

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

См. также

Справочник

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