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


sp_clean_db_free_space (Transact-SQL)

применимо к:SQL ServerУправляемому экземпляру SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_clean_db_free_space
    [ @dbname = ] N'dbname'
    [ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]

Аргументы

[ @dbname = ] N'dbname'

Имя базы данных для очистки. @dbname — sysname, без значения по умолчанию.

[ @cleaning_delay = ] cleaning_delay

Задаёт интервал задержки перед очисткой каждой страницы, в секунды. @cleaning_delay имеет значение int с значением по умолчанию0. Эта задержка помогает снизить нагрузку на систему ввода-вывода за счёт увеличения продолжительности процесса очистки.

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

0 (успешно) или 1 (сбой).

Замечания

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 роли базы данных.

Примеры

Следующий пример очищает все остаточные данные из AdventureWorks2025 базы данных.

USE master;
GO

EXECUTE sp_clean_db_free_space @dbname = N'AdventureWorks2022';