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 = ] N'dbname'
, [ @fileid = ] fileid
[ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]
Аргументы
[ @dbname = ] N'dbname'
Имя базы данных для очистки. @dbname — sysname, без значения по умолчанию.
[ @fileid = ] fileid
Идентификатор файла данных для очистки. @fileid не используется без значения по умолчанию.
[ @cleaning_delay = ] cleaning_delay
Интервал задержки между операциями очистки страниц. @cleaning_delay имеет значение int с значением по умолчанию0
. Эта задержка помогает снизить влияние на систему ввода-вывода.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
Удаляет операции из таблицы или обновляет операции, которые приводят к перемещению строки, что может немедленно освободить пространство на странице путем удаления ссылок на строку. Но при определенных обстоятельствах строка может физически оставаться на странице данных как фантомная запись. Фоновый процесс периодически удаляет фантомные записи. Эти остаточные данные не возвращаются ядро СУБД в ответ на запросы. Однако в средах, в которых физическая безопасность данных или файлов резервных копий находится под угрозой, можно использовать sp_clean_db_file_free_space
для очистки этих фантомных записей. Чтобы выполнить эту операцию для всех файлов базы данных одновременно, используйте sp_clean_db_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 .
Примеры
В следующем примере выполняется очистка всех остаточных данных в первичном файле данных базы данных AdventureWorks2022
.
USE master;
GO
EXEC sp_clean_db_file_free_space
@dbname = N'AdventureWorks2022',
@fileid = 1;