sp_filestream_force_garbage_collection (Transact-SQL)
Aplica-se a:SQL Server
Força a execução do coletor de lixo FILESTREAM (GC), excluindo todos os arquivos FILESTREAM desnecessários.
Um contêiner FILESTREAM não pode ser removido até que todos os arquivos excluídos dentro dele sejam limpos pelo GC. O FILESTREAM GC é executado automaticamente. No entanto, se você precisar remover um contêiner antes que o GC tenha sido executado, você pode usar sp_filestream_force_garbage_collection
para executar o GC manualmente.
Convenções de sintaxe de Transact-SQL
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 executar o GC.
@dbname é sysname. Se não for especificado, o banco de dados atual será assumido.
@filename [ = ] 'logical_file_name'
Especifica o nome lógico do contêiner FILESTREAM no qual executar o GC. @filename é opcional. Se nenhum nome de arquivo lógico for especificado, o GC limpará todos os contêineres FILESTREAM no banco de dados especificado.
Valores do código de retorno
Valor | Descrição |
---|---|
0 |
Êxito na operação |
1 |
Falha na operação |
Conjunto de resultados
Valor | Descrição |
---|---|
file_name |
Indica o nome de contêiner FILESTREAM |
num_collected_items |
Indica o número de itens FILESTREAM (arquivos ou diretórios) que foram coletados (excluídos) nesse contêiner. |
num_marked_for_collection_items |
Indica o número de itens FILESTREAM (arquivos ou diretórios) que foram marcados para GC neste contêiner. Esses itens ainda não foram excluídos, mas podem ser elegíveis para exclusão após a fase GC. |
num_unprocessed_items |
Indica o número de itens FILESTREAM qualificados (arquivos ou diretórios) que não foram processados para GC neste contêiner FILESTREAM. Os itens podem não ser processados por vários motivos, incluindo: - Arquivos que precisam ser fixados porque um backup de log ou ponto de verificação não foi feito. - Arquivos no modelo de recuperação FULL ou BULK_LOGGED. - Há uma transação ativa de longa duração. - O trabalho do leitor de log de replicação não foi executado. Consulte o white paper FILESTREAM Storage no SQL Server 2008 para obter mais informações. |
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 de coleta de lixo FILESTREAM até a conclusão no banco de dados solicitado (e no contêiner FILESTREAM). O processo GC remove arquivos que não são mais necessários. O tempo necessário para que essa operação seja concluída depende do tamanho dos dados FILESTREAM nesse banco de dados ou contêiner e da quantidade de atividade DML que ocorreu recentemente nos dados FILESTREAM. Embora essa 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 GC.
Observação
Recomenda-se que esta operação seja executada apenas quando necessário e fora do horário normal de funcionamento.
É possível executar várias invocações desse procedimento armazenado simultaneamente em contêineres ou em bancos de dados separados.
Devido a operações de duas fases, o procedimento armazenado deve ser executado duas vezes para realmente excluir arquivos FILESTREAM subjacentes.
A coleta de lixo depende do truncamento de logs. Portanto, se os arquivos foram excluídos recentemente em um banco de dados usando o modelo de recuperação completa, eles serão coletados somente depois que um backup de log dessas partes do log de transações for feito e a parte do log for marcada como inativa. Em um banco de dados usando o modelo de recuperação simples, um truncamento de log ocorre depois que um CHECKPOINT
foi emitido no banco de dados.
Permissões
Requer associação à função de banco de dados db_owner .
Exemplos
Os exemplos a seguir executam os contêineres GC para FILESTREAM no fsdb
banco de dados.
R. Não especificar nenhum contêiner
USE fsdb;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'fsdb';
B. Especificar um contêiner
USE fsdb;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'fsdb',
@filename = N'FSContainer';
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de