Condividi tramite


sp_filestream_force_garbage_collection (Transact-SQL)

Forza il Garbage Collector di FILESTREAM all'esecuzione, eliminando qualsiasi file FILESTREAM non necessario.

Non è possibile rimuovere un contenitore FILESTREAM finché il Garbage Collector non ha completato la rimozione di tutti i file eliminati all'interno di esso. Il Garbage Collector di FILESTREAM viene eseguito automaticamente. Tuttavia, se è necessario rimuovere un contenitore prima dell'esecuzione del Garbage Collector, è possibile utilizzare sp_filestream_force_garbage_collection per eseguire manualmente il Garbage Collector.

Si applica a: SQL Server (da SQL Server 2012 a versione corrente).

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 il Garbage Collector.

    Nota

    dbname è di tipo sysname.Se viene omesso, verrà considerato il database corrente.

  • @filename = logical_file_name
    Indica il nome logico del contenitore FILESTREAM in cui eseguire il Garbage Collector. @filename è facoltativo. Se non viene specificato alcun nome di file logico, il Garbage Collector eseguirà la pulizia di tutti i contenitori FILESTREAM nel database specificato.

Valori di codice restituiti

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/directory) che sono stati sottoposti a Garbage Collection (eliminati) in questo contenitore.

num_marked_for_collection_items

Indica il numero di elementi FILESTREAM (file/directory) che sono stati contrassegnati per il Garbage Collection in questo contenitore. Questi elementi non sono ancora stati eliminati, ma potrebbero essere idonei all'eliminazione nella fase seguente di Garbage Collection.

num_unprocessed_items

Indica il numero di elementi FILESTREAM (file o directory) idonei che non sono stati elaborati per il Garbage Collection in questo contenitore FILESTREAM.

Gli elementi possono non essere elaborati per i vari motivi, tra cui:

  • File che devono essere bloccati perché non è stato eseguito un checkpoint o backup del log.

  • File nel modello di recupero FULL o BULK_LOGGED.

  • È presente una transazione attiva con esecuzione prolungata.

  • Il processo di lettura log repliche non è stato eseguito. Per ulteriori 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à Garbage Collector per FILESTREAM per il completamento nel database richiesto (e il contenitore FILESTREAM). I file che non sono più necessari vengono rimossi dal processo di Garbage Collection. Il tempo necessario per il completamento di questa operazione dipende dalle dimensioni dei dati FILESTREAM in tale database o contenitore nonché dalla quantità di attività DML recentemente eseguita sui dati FILESTREAM. Sebbene questa operazione possa essere eseguita con il database in modalità online, ciò potrebbe influire sulle prestazioni del database durante l'esecuzione a causa delle varie attività I/O eseguite dal processo di Garbage Collection.

Nota

Si consiglia di eseguire questa operazione solo quando è necessario e in orario diverso da quello lavorativo.

È possibile eseguire contemporaneamente più chiamate di questa stored procedure solo in contenitori separati o database separati.

Autorizzazioni

È richiesta l'appartenenza al ruolo del database db_owner.

Esempi

Negli esempi seguenti viene eseguito il Garbage Collector per i contenitori FILESTREAM nel database FSDB.

A.Specifica di nessun contenitore

USE FSDB;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'FSDB';

B.Specifica di un contenitore

USE FSDB;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'FSDB' @filename = N'FSContainer';

Vedere anche

Altre risorse

FILESTREAM Storage in SQL Server 2008