sp_filestream_force_garbage_collection (Transact-SQL)

S’applique à :SQL Server

Force le récupérateur de mémoire FILESTREAM (GC) à s’exécuter, en supprimant tous les fichiers FILESTREAM inutiles.

Un conteneur FILESTREAM ne peut pas être supprimé tant que tous les fichiers supprimés qu’il contient n’ont pas été nettoyés par le gc. Le GC FILESTREAM s’exécute automatiquement. Toutefois, si vous devez supprimer un conteneur avant l’exécution du GC, vous pouvez utiliser sp_filestream_force_garbage_collection pour exécuter le gc manuellement.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_filestream_force_garbage_collection
    [ @dbname = ] 'database_name'
    [ , [ @filename = ] 'logical_file_name' ]

Arguments

[ @dbname = ] 'database_name'

Signifie le nom de la base de données sur laquelle exécuter le gc.

@dbname est sysname. En l'absence de spécification, c'est la base de données actuelle qui est utilisée.

[ @filename = ] 'logical_file_name'

Spécifie le nom logique du conteneur FILESTREAM sur lequel exécuter le gc. @filename est facultatif. Si aucun nom de fichier logique n’est spécifié, le gc nettoie tous les conteneurs FILESTREAM dans la base de données spécifiée.

Valeurs des codes de retour

Valeur Description
0 Réussite de l'opération
1 Échec de l'opération

Jeux de résultats

Valeur Description
file_name Indique le nom de conteneur FILESTREAM
num_collected_items Indique le nombre d’éléments FILESTREAM (fichiers ou répertoires) qui ont été récupérés (supprimés) dans ce conteneur.
num_marked_for_collection_items Indique le nombre d’éléments FILESTREAM (fichiers ou répertoires) qui ont été marqués pour GC dans ce conteneur. Ces éléments n’ont pas encore été supprimés, mais peuvent être éligibles à la suppression après la phase gc.
num_unprocessed_items Indique le nombre d’éléments FILESTREAM éligibles (fichiers ou répertoires) qui n’ont pas été traités pour GC dans ce conteneur FILESTREAM. Les éléments peuvent être non traités pour diverses raisons, notamment :

- Fichiers qui doivent être épinglés, car aucune sauvegarde de journal ou point de contrôle n’a été effectuée.

- Fichiers dans le mode de récupération FULL ou BULK_LOGGED.

- Il existe une transaction active de longue durée.

- Le travail de lecteur du journal de réplication n’a pas été exécuté. Pour plus d’informations, consultez le livre blanc FILESTREAM Storage in SQL Server 2008.
last_collected_xact_seqno Retourne le dernier numéro séquentiel dans le journal correspondant (LSN) jusqu'aux fichiers récupérés par le garbage collector pour le conteneur FILESTREAM spécifié.

Notes

Exécute explicitement la tâche de garbage collection FILESTREAM jusqu’à l’achèvement sur la base de données demandée (et le conteneur FILESTREAM). Le processus GC supprime les fichiers qui ne sont plus nécessaires. Le temps nécessaire à l’exécution de cette opération dépend de la taille des données FILESTREAM dans cette base de données ou conteneur, et de la quantité d’activité DML qui s’est produite récemment sur les données FILESTREAM. Bien que cette opération puisse être exécutée avec la base de données en ligne, cela peut affecter les performances de la base de données pendant son exécution en raison de diverses activités d’E/S effectuées par le processus GC.

Notes

Il est recommandé de n'exécuter cette opération que lorsque cela est nécessaire et en dehors des heures d'activité habituelles.

Plusieurs appels de cette procédure stockée peuvent être exécutés simultanément uniquement sur des conteneurs distincts ou des bases de données distinctes.

En raison des opérations en deux phases, la procédure stockée doit être exécutée deux fois pour supprimer réellement les fichiers FILESTREAM sous-jacents.

Le garbage collection s’appuie sur la troncation des journaux. Par conséquent, si des fichiers ont été supprimés récemment sur une base de données à l’aide du modèle de récupération complète, ils sont collectés par la mémoire uniquement après qu’une sauvegarde du journal de ces parties du journal des transactions a été effectuée, et la partie du journal est marquée comme inactive. Sur une base de données utilisant le modèle de récupération simple, une troncation de journal se produit après l’émission d’un CHECKPOINT sur la base de données.

Autorisations

Nécessite l’appartenance au rôle de base de données db_owner .

Exemples

Les exemples suivants exécutent les conteneurs GC pour FILESTREAM dans la fsdb base de données.

R. Spécifier aucun conteneur

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

B. Spécifier un conteneur

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

Voir aussi