sp_filestream_force_garbage_collection (Transact-SQL)
Força a execução do coletor de lixo FILESTREAM, excluindo qualquer arquivo FILESTREAM desnecessário.
Não é possível remover um contêiner FILESTREAM antes que o coletor de lixo limpe todos os arquivos excluídos contidos nele. O coletor de lixo FILESTREAM é executado automaticamente. Porém, se você precisar remover um contêiner antes da execução do coletor de lixo, você poderá usar sp_filestream_force_garbage_collection para executá-lo manualmente.
Sintaxe
sp_filestream_force_garbage_collection [ @dbname = ] 'database_name' , @filename = 'logical_file_name' ]
Argumentos
@dbname = database_name**'**
Significa o nome do banco de dados no qual o coletor de lixo será executado.Observação dbname é sysname. Se não for especificado, ele será o banco de dados atual.
@filename = logical_file_name
Especifica o nome lógico do contêiner FILESTREAM no qual o coletor de lixo será executado. @filename é opcional. Se nenhum nome de arquivo lógico for especificado, o coletor de lixo limpará todos os contêineres FILESTREAM no banco de dados especificado.
Valores de código de retorno
Value |
Descrição |
0 |
Êxito na operação |
1 |
Falha na operação |
Conjuntos de resultados
Value |
Descrição |
---|---|
file_name |
Indica o nome de contêiner FILESTREAM |
num_collected_items |
Indica o número de itens FILESTREAM (arquivos/diretórios) que foram limpos (excluídos) pelo coletor de dados neste contêiner. |
num_marked_for_collection_items |
Indica o número de itens FILESTREAM (arquivos/diretórios) que foram marcados para coleta de lixo neste contêiner. Estes itens ainda não foram excluídos, mas podem se qualificar para exclusão após a fase de coleta de lixo. |
num_unprocessed_items |
Indica o número de itens FILESTREAM qualificados (arquivos ou diretórios) que não foram processados para coleta de lixo neste FILESTREAM. Itens podem não ser processados por várias razões, inclusive as seguintes:
|
last_collected_xact_seqno |
Retorna o número de sequência de log correspondente (LSN) até onde os arquivos do contêiner FILESTREAM especificado foram coletados pelo coletor de lixo. |
Comentários
Executa explicitamente a tarefa Coletor de lixo FILESTREAM até a conclusão no banco de dados solicitado (e no contêiner FILESTREAM). Arquivos que não são mais necessários são removidos pelo processo de coleta de lixo. O tempo necessário para que essa operação seja concluída depende do tamanho dos dados FILESTREAM no banco de dados ou contêiner, bem como a quantidade de atividades de DML ocorridas recentemente nos dados FILESTREAM. Embora esta operação possa ser executada com o banco de dados online, isso pode afetar o desempenho do banco de dados durante sua execução devido a várias atividades de E/S feitas pelo processo de coleta de lixo.
Observação |
---|
É recomendado que esta operação apenas seja executada quando necessário e fora de horas de operação habituais. |
É possível executar várias invocações desse procedimento armazenado simultaneamente em contêineres ou em bancos de dados separados.
Permissões
Requer associação na função de banco de dados db_owner.
Exemplos
Os exemplos a seguir executam o coletor de lixo para contêineres FILESTREAM no banco de dados FSDB.
A.Não especificando nenhum contêiner
USE FSDB;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'FSDB';
B.Especificando um contêiner
USE FSDB;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'FSDB' @filename = N'FSContainer';