sp_filestream_force_garbage_collection (Transact-SQL)

Принудительно запускает сборщик мусора FILESTREAM, который удаляет все ненужные файлы FILESTREAM.

Контейнер FILESTREAM не может быть удален до тех пор, пока все удаленные файлы в нем не будут очищены сборщиком мусора. Сборщик мусора FILESTREAM запускается автоматически. Однако, если контейнер необходимо удалить немедленно, не дожидаясь запуска сборщика мусора, можно с помощью хранимой процедуры sp_filestream_force_garbage_collection запустить сборщик вручную.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии).

Синтаксис

sp_filestream_force_garbage_collection [ @dbname = ]  'database_name'  , @filename = 'logical_file_name' ]

Аргументы

  • @dbname = database_name**'**
    Обозначает имя базы данных, в которой будет запущен сборщик мусора.

    Примечание

    Аргумент dbname имеет тип sysname.Если он не указан, предполагается текущая база данных.

  • @filename = logical_file_name
    Обозначает логическое имя контейнера FILESTREAM, в котором будет запущен сборщик мусора. Параметр @filename является необязательным. Если логическое имя файла не указано, то сборщик мусора очистит все контейнеры FILESTREAM в указанной базе данных.

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

Значение

Описание

0

Операция выполнена успешно

1

Ошибка при выполнении операции

Результирующие наборы

Значение

Описание

file_name

Указывает имя контейнера FILESTREAM

num_collected_items

Указывает число элементов FILESTREAM (файлов и каталогов), которые были собраны как мусор (удалены) в данном контейнере.

num_marked_for_collection_items

Указывает число элементов FILESTREAM (файлов и каталогов), которые были отмечены для сборки мусора в данном контейнере. Эти элементы еще не удалены, но помечены для удаления на следующем этапе сборки мусора.

num_unprocessed_items

Указывает число подлежащих сборке мусора элементов FILESTREAM (файлов и каталогов), для которых сборка в данном контейнере не была выполнена.

Это может произойти по разным причинам, включая следующие.

  • Файлы закреплены, так как еще не создана резервная копия журналов или контрольной точки.

  • Файлы относятся к модели восстановления FULL или BULK_LOGGED.

  • Существует длительно выполняющаяся активная транзакция.

  • Задание чтения журнала репликации не запущено. Дополнительные сведения см. в техническом документе Хранилище FILESTREAM в SQL Server 2008.

last_collected_xact_seqno

Возвращает последний соответствующий номер последовательности LSN, до которого для файлов была выполнена сборка мусора в указанном контейнере FILESTREAM.

Замечания

Явным образом запускает задачу сборщика мусора FILESTREAM для указанной базы данных (и контейнера FILESTREAM). Файлы, которые больше не требуются, удаляются процессом сборки мусора. Время, необходимое на выполнение этой операции, зависит от объема данных FILESTREAM в базе данных или контейнере, а также от объема операций DML, произведенных в последнее время над данными FILESTREAM. Хотя эта операция может выполняться и при режиме работы базы данных в сети, но в таком случае производительность базы данных может понизиться, так как во время сборки мусора выполняются различные операции ввода-вывода.

Примечание

Рекомендуется запускать эту операцию только при необходимости и в нерабочее время.

Несколько вызовов этой хранимой процедуры можно осуществить одновременно только в различных контейнерах или базах данных.

Разрешения

Необходимо членство в роли базы данных db_owner.

Примеры

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

А.Без указания контейнера

USE FSDB;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'FSDB';

Б.С указанием контейнера

USE FSDB;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'FSDB' @filename = N'FSContainer';

См. также

Другие ресурсы

Хранилище FILESTREAM в SQL Server 2008