Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Força o coletor de lixo (GC) FILESTREAM a correr, eliminando quaisquer ficheiros FILESTREAM desnecessários.
Um contentor FILESTREAM não pode ser removido até que todos os ficheiros eliminados nele sejam limpos pelo GC. O GC FILESTREAM corre automaticamente. No entanto, se precisares de remover um contentor antes do GC estar a funcionar, podes usar sp_filestream_force_garbage_collection o GC manualmente.
Transact-SQL convenções de sintaxe
Syntax
sys.sp_filestream_force_garbage_collection
[ [ @dbname = ] N'dbname' ]
[ , [ @filename = ] N'filename' ]
[ ; ]
Arguments
[ @dbname = ] N'dbname'
Indica o nome da base de dados para executar o GC.
@dbname é sysname. Se não especificado, assume-se a base de dados atual.
[ @filename = ] N'nome do ficheiro'
Especifica o nome lógico do contentor FILESTREAM para executar o GC. @filename é opcional. Se não for especificado um nome lógico de ficheiro, o GC limpa todos os contentores FILESTREAM na base de dados especificada.
Valores de código de retorno
| Value | Description |
|---|---|
0 |
Sucesso da operação |
1 |
Falha operacional |
Conjunto de resultados
| Value | Description |
|---|---|
file_name |
Indica o nome do contentor FILESTREAM |
num_collected_items |
Indica o número de itens FILESTREAM (ficheiros ou diretórios) que foram recolhidos (eliminados) neste contentor. |
num_marked_for_collection_items |
Indica o número de itens FILESTREAM (ficheiros ou diretórios) que foram marcados para GC neste contentor. Estes itens ainda não foram eliminados, mas podem ser elegíveis para eliminação após a fase de GC. |
num_unprocessed_items |
Indica o número de itens FILESTREAM elegíveis (ficheiros ou diretórios) que não foram processados para GC neste contentor FILESTREAM. Os itens podem estar por processar por várias razões, incluindo: - Ficheiros que precisam de ser identificados porque não foi feito um backup de registo ou checkpoint. - Ficheiros no modelo de recuperação COMPLETO ou BULK_LOGGED. - Há uma transação ativa de longa duração. - O trabalho do leitor de registo de replicação não foi executado. Consulte o white paper FILESTREAM Storage in SQL Server 2008 para mais informações. |
last_collected_xact_seqno |
Retorna o último número de sequência de log correspondente (LSN) até ao qual os ficheiros foram recolhidos pelo contentor FILESTREAM especificado. |
Remarks
Executa explicitamente a tarefa de recolha de lixo FILESTREAM até à conclusão na base de dados solicitada (e no contentor FILESTREAM). O processo de GC remove ficheiros que já não são necessários. O tempo necessário para esta operação ser concluída depende do tamanho dos dados do FILESTREAM nessa base de dados ou contentor e da quantidade de atividade DML que ocorreu recentemente nos dados do FILESTREAM. Embora esta operação possa ser executada com a base de dados online, pode afetar o desempenho da base de dados durante a sua execução devido a várias atividades de I/O realizadas pelo processo GC.
Note
Recomenda-se que esta operação seja realizada apenas quando necessário e fora do horário habitual.
Múltiplas invocações deste procedimento armazenado podem ser executadas simultaneamente apenas em contentores separados ou bases de dados separadas.
Devido a operações em duas fases, o procedimento armazenado deve ser executado duas vezes para realmente eliminar ficheiros FILESTREAM subjacentes.
A recolha de lixo baseia-se na truncação de log. Portanto, se os ficheiros foram eliminados recentemente numa base de dados usando o modelo completo de recuperação, só são recolhidos pelo lixo depois de fazer uma cópia de segurança do registo dessas partes do registo de transações, e a parte do registo ser marcada como inativa. Numa base de dados que utiliza o modelo simples de recuperação, ocorre um truncamento de logaritário após ter sido emitido a CHECKPOINT contra a base de dados.
Permissions
Requer a adesão ao papel de base de dados db_owner .
Examples
Os exemplos seguintes executam o GC para contentores FILESTREAM na fsdb base de dados.
A. Não especifique nenhum contentor
USE fsdb;
GO
EXECUTE sp_filestream_force_garbage_collection @dbname = N'fsdb';
B. Especificar um contentor
USE fsdb;
GO
EXECUTE sp_filestream_force_garbage_collection
@dbname = N'fsdb',
@filename = N'FSContainer';