sp_clean_db_file_free_space (Transact-SQL)

Применимо к:SQL Server

Удаляет оставшиеся сведения на страницах базы данных из-за подпрограмм изменения данных в 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 имеет значение по умолчанию 0.

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

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

Замечания

Удаляет операции из таблицы или обновляет операции, которые приводят к перемещению строки, что может немедленно освободить пространство на странице путем удаления ссылок на строку. Но при определенных обстоятельствах строка может физически оставаться на странице данных как фантомная запись. Фантомные записи периодически удаляются фоновым процессом. Эти остаточные данные не возвращаются ядром СУБД в ответ на запросы. Однако в средах, в которых физическая безопасность данных или файлов резервных копий находится под угрозой, можно использовать sp_clean_db_file_free_space для очистки этих фантомных записей. Чтобы выполнить эту операцию для всех файлов базы данных одновременно, используйте sp_clean_db_free_space (Transact-SQL).

Продолжительность времени, необходимого для выполнения процедуры 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 роли базы данных.

Примеры

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

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

См. также

Хранимые процедуры ядра СУБД (Transact-SQL)
Руководство по очистке призраков
sp_clean_db_free_space (Transact-SQL)