sp_filestream_force_garbage_collection (Transact-SQL)

Fuerza la ejecución del recolector de elementos no utilizados de FILESTREAM eliminando los archivos FILESTREAM innecesarios.

Un contenedor de FILESTREAM no se puede quitar hasta que el recolector de elementos no utilizados ha limpiado todos los archivos eliminados que contiene. El recolector de elementos no utilizados de FILESTREAM se ejecuta automáticamente. Sin embargo, si es necesario quitar un contenedor antes de que se haya ejecutado el recolector de elementos no utilizados, puede utilizar sp_filestream_force_garbage_collection para ejecutarlo manualmente.

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 debe ejecutar el recolector de elementos no utilizados.

    [!NOTA]

    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 de FILESTREAM en el que se va a ejecutar el recolector de elementos no utilizados. @filename es opcional. Si no se especifica ningún nombre de archivo lógico, el recolector de elementos no utilizados limpiará todos los contenedores de 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

Conjuntos de resultados

Valor

Descripción

file_name

Indica el nombre del contenedor de FILESTREAM

num_collected_items

Indica el número de elementos de FILESTREAM (archivos o directorios) que el recolector de elementos eliminados ha eliminado en este contenedor.

num_marked_for_collection_items

Indica el número de elementos de FILESTREAM (archivos o directorios) que se han marcado para la recolección de elementos no utilizados en este contenedor. Estos elementos no se han eliminado todavía, pero se pueden eliminar en la siguiente fase de recolección de elementos no utilizados.

num_unprocessed_items

Indica el número de elementos de FILESTREAM (archivos o directorios) que se podían haber eliminado y no se procesaron para la recolección de elementos no utilizados en este contenedor de FILESTREAM.

Los elementos pueden no haberse procesado por diversas razones, por ejemplo:

  • Archivos que se tienen que anclar porque no se ha tomado la copia de seguridad de registros o CHECKPOINT.

  • Archivos del modelo de recuperación FULL o BULK_LOGGED.

  • Hay una transacción activa de ejecución prolongada.

  • No se ha ejecutado el trabajo del lector del registro de replicación. Vea las notas sobre el producto sobre almacenamiento de FILESTREAM en SQL Server 2008 para obtener más información.

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 del recolector de elementos no utilizados de FILESTREAM hasta su finalización en la base de datos solicitada (y el contenedor de FILESTREAM). El proceso de recolección de elementos no utilizados quita los archivos que ya no se necesitan. El tiempo necesario para completar esta operación depende del tamaño de los datos de FILESTREAM en la base de datos o el contenedor, así como de la cantidad de actividad DML que se ha producido recientemente en los datos de FILESTREAM. Si bien esta operación se puede ejecutar mientras la base de datos está en línea, el rendimiento de la base de datos puede verse afectado durante la ejecución como consecuencia de diversas actividades de I/O que el proceso de recolección de elementos no utilizados lleva a cabo.

[!NOTA]

Se recomienda que esta operación solo se ejecute cuando sea necesario y fuera las horas de actividad normales.

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

Permisos

Exige la pertenencia al rol de base de datos db_owner.

Ejemplos

En los siguientes ejemplos se ejecuta el recolector de elementos no utilizados para contenedores de FILESTREAM de la base de datos FSDB.

A.Sin especificar ningún contenedor

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

B.Especificando un contenedor

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

Vea también

Otros recursos

Almacenamiento de FILESTREAM en SQL Server 2008