sp_clean_db_free_space (Transact-SQL)
Область применения: SQL Server
Удаляет оставшиеся сведения на страницах базы данных из-за подпрограмм изменения данных в SQL Server. 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_file_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
роли базы данных.
Примеры
В следующем примере показано, как очистить всю остаточную информацию в базе данных AdventureWorks2022
.
USE master;
GO
EXEC sp_clean_db_free_space @dbname = N'AdventureWorks2022';