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


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;