Comparteix a través de


sp_filestream_force_garbage_collection (Transact-SQL)

Se aplica a: SQL Server

Obliga al recolector de elementos no utilizados (GC) de FILESTREAM a ejecutarse, eliminando los archivos FILESTREAM innecesarios.

Un contenedor FILESTREAM no se puede quitar hasta que el GC limpie todos los archivos eliminados que contiene. El GC filestream se ejecuta automáticamente. Sin embargo, si necesita quitar un contenedor antes de que se haya ejecutado la gc, puede usar sp_filestream_force_garbage_collection para ejecutar el GC manualmente.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @dbname = ] 'database_name'

Indica el nombre de la base de datos en la que se va a ejecutar la gc.

@dbname es sysname. Si no se especifica, se supone que es la base de datos actual.

[ @filename = ] 'logical_file_name'

Especifica el nombre lógico del contenedor FILESTREAM en el que se va a ejecutar la GC. @filename es opcional. Si no se especifica ningún nombre de archivo lógico, el GC limpia todos los contenedores FILESTREAM de la base de datos especificada.

Valores de código de retorno

Valor Descripción
0 Operación correcta
1 Error de operación

Conjunto de resultados

Valor Descripción
file_name Indica el nombre del contenedor de FILESTREAM
num_collected_items Indica el número de elementos FILESTREAM (archivos o directorios) que se han recopilado (eliminado) de elementos no utilizados en este contenedor.
num_marked_for_collection_items Indica el número de elementos FILESTREAM (archivos o directorios) marcados para GC en este contenedor. Estos elementos aún no se han eliminado, pero podrían ser aptos para su eliminación después de la fase de GC.
num_unprocessed_items Indica el número de elementos FILESTREAM aptos (archivos o directorios) que no se procesaron para GC en este contenedor FILESTREAM. Los elementos pueden no procesarse por diversos motivos, entre los que se incluyen:

- Archivos que deben anclarse porque no se ha realizado una copia de seguridad de registros o un punto de control.

- Archivos en el modelo de recuperación FULL o BULK_LOGGED.

- Hay una transacción activa de larga duración.

- El trabajo del lector del registro de replicación no se ha ejecutado. Para obtener más información, consulte las notas del producto ALMACENAMIENTO FILESTREAM en SQL Server 2008 .
last_collected_xact_seqno Devuelve el último número de secuencia de registro (LSN) correspondiente hasta el que el recolector de elementos no utilizados ha recolectado archivos del contenedor de FILESTREAM especificado.

Comentarios

Ejecuta explícitamente la tarea de recolección de elementos no utilizados FILESTREAM para completarse en la base de datos solicitada (y el contenedor FILESTREAM). El proceso de GC quita los archivos que ya no son necesarios. El tiempo necesario para que esta operación se complete depende del tamaño de los datos FILESTREAM de esa base de datos o contenedor y de la cantidad de actividad DML que se produjo recientemente en los datos FILESTREAM. Aunque esta operación se puede ejecutar con la base de datos en línea, esto puede afectar al rendimiento de la base de datos durante su ejecución debido a varias actividades de E/S realizadas por el proceso de GC.

Nota:

Se recomienda que esta operación se ejecute solo cuando sea necesario y fuera del horario de operación habitual.

Solo se pueden ejecutar simultáneamente varias invocaciones de este procedimiento almacenado en contenedores o bases de datos independientes.

Debido a las operaciones en dos fases, el procedimiento almacenado debe ejecutarse dos veces para eliminar realmente los archivos FILESTREAM subyacentes.

La recolección de elementos no utilizados se basa en el truncamiento del registro. Por lo tanto, si los archivos se eliminaron recientemente en una base de datos mediante el modelo de recuperación completa, solo se recopilan como elementos no utilizados después de tomar una copia de seguridad del registro de esas partes del registro de transacciones y la parte del registro se marca como inactiva. En una base de datos mediante el modelo de recuperación simple, se produce un truncamiento de registro después de que se haya emitido una CHECKPOINT excepción en la base de datos.

Permisos

Requiere la pertenencia al rol de base de datos db_owner .

Ejemplos

En los ejemplos siguientes se ejecuta el GC para contenedores FILESTREAM en la fsdb base de datos.

A Especificar ningún contenedor

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

B. Especificación de un contenedor

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