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:
|
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';