sp_filestream_force_garbage_collection (Transact-SQL)
Si applica a: SQL Server
Forza l'esecuzione del Garbage Collector (GC) FILESTREAM, eliminando eventuali file FILESTREAM non necessari.
Un contenitore FILESTREAM non può essere rimosso fino a quando tutti i file eliminati all'interno del contenitore non vengono puliti dal catalogo globale. L'GC FILESTREAM viene eseguito automaticamente. Tuttavia, se è necessario rimuovere un contenitore prima dell'esecuzione del GC, è possibile usare sp_filestream_force_garbage_collection
per eseguire manualmente il catalogo globale.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_filestream_force_garbage_collection
[ @dbname = ] 'database_name'
[ , [ @filename = ] 'logical_file_name' ]
[ ; ]
Argomenti
[ @dbname = ] 'database_name'
Indica il nome del database in cui eseguire GC.
@dbname è sysname. Se viene omesso, verrà considerato il database corrente.
[ @filename = ] 'logical_file_name'
Specifica il nome logico del contenitore FILESTREAM in cui eseguire GC. @filename è facoltativo. Se non viene specificato alcun nome file logico, GC pulisce tutti i contenitori FILESTREAM nel database specificato.
Valori del codice restituito
valore | Descrizione |
---|---|
0 |
Operazione riuscita |
1 |
Operazione non riuscita |
Set di risultati
valore | Descrizione |
---|---|
file_name |
Indica il nome del contenitore FILESTREAM |
num_collected_items |
Indica il numero di elementi FILESTREAM (file o directory) che sono stati sottoposti a Garbage Collection (eliminati) in questo contenitore. |
num_marked_for_collection_items |
Indica il numero di elementi FILESTREAM (file o directory) contrassegnati per GC in questo contenitore. Questi elementi non sono stati ancora eliminati, ma potrebbero essere idonei per l'eliminazione dopo la fase GC. |
num_unprocessed_items |
Indica il numero di elementi FILESTREAM idonei (file o directory) che non sono stati elaborati per GC in questo contenitore FILESTREAM. Gli elementi potrebbero non essere elaborati per vari motivi, tra cui: - File che devono essere aggiunti perché non è stato eseguito un backup del log o un checkpoint. - File nel modello di recupero FULL o BULK_LOGGED. - È presente una transazione attiva a esecuzione prolungata. - Il processo di lettura log di replica non è stato eseguito. Per altre informazioni, vedere il white paper FileSTREAM Storage in SQL Server 2008 . |
last_collected_xact_seqno |
Restituisce l'ultimo numero di sequenza del file di log (LSN) corrispondente fino a cui i file sono stati sottoposti a Garbage Collection per il contenitore FILESTREAM specificato. |
Osservazioni:
Esegue in modo esplicito l'attività di Garbage Collection FILESTREAM per il completamento nel database richiesto (e nel contenitore FILESTREAM). Il processo GC rimuove i file non più necessari. Il tempo necessario per il completamento di questa operazione dipende dalle dimensioni dei dati FILESTREAM in tale database o contenitore e dalla quantità di attività DML che si sono verificate di recente sui dati FILESTREAM. Anche se questa operazione può essere eseguita online con il database, ciò potrebbe influire sulle prestazioni del database durante l'esecuzione a causa di varie attività di I/O eseguite dal processo GC.
Nota
È consigliabile eseguire questa operazione solo quando necessario e al di fuori delle normali ore operative.
È possibile eseguire contemporaneamente più chiamate di questa stored procedure solo in contenitori separati o database separati.
A causa di operazioni in due fasi, la stored procedure deve essere eseguita due volte per eliminare effettivamente i file FILESTREAM sottostanti.
Garbage Collection si basa sul troncamento del log. Pertanto, se i file sono stati eliminati di recente in un database usando il modello di recupero con registrazione completa, vengono raccolti solo dopo l'esecuzione di un backup del log di tali parti del log delle transazioni e la parte del log è contrassegnata come inattiva. In un database che usa il modello di recupero con registrazione minima, si verifica un troncamento del log dopo l'emissione di un CHECKPOINT
oggetto sul database.
Autorizzazioni
Richiede l'appartenenza al ruolo del database db_owner .
Esempi
Negli esempi seguenti viene eseguito il GC per i contenitori FILESTREAM nel fsdb
database.
R. Specificare nessun contenitore
USE fsdb;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'fsdb';
B. Specificare un contenitore
USE fsdb;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'fsdb',
@filename = N'FSContainer';