sp_filestream_force_garbage_collection (Transact-SQL)

Force le garbage collector FILESTREAM à s'exécuter, en supprimant tous 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 garbage collector. Le garbage collector FILESTREAM s'exécute automatiquement. Toutefois, si vous devez supprimer un conteneur avant que le garbage collector se soit exécuté, vous pouvez utiliser sp_filestream_force_garbage_collection pour exécuter le garbage collector manuellement.

Syntaxe

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

Arguments

  • @dbname = database_name**'**
    Représente le nom de la base de données dans laquelle exécuter le garbage collector.

    [!REMARQUE]

    dbname est de type 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 dans lequel exécuter le garbage collector. @filename est facultatif. Si aucun nom de fichier logique n'est spécifié, le garbage collector nettoiera 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/répertoires) qui ont été récupérés par le garbage collector (supprimés) dans ce conteneur.

num_marked_for_collection_items

Indique le nombre d'éléments FILESTREAM (fichiers/répertoires) qui ont été marqués pour le garbage collection dans ce conteneur. Ces éléments n'ont pas encore été supprimés, mais peuvent être éligibles pour une suppression dans la phase de garbage collection suivante.

num_unprocessed_items

Indique le nombre d'éléments FILESTREAM éligibles (fichiers ou répertoires) qui n'ont pas été traités pour le garbage collection dans ce conteneur FILESTREAM.

Les éléments peuvent être inexploités pour différentes raisons, notamment :

  • Fichiers qui doivent être épinglés car la sauvegarde de journal ou le point de contrôle n'a pas été accepté.

  • Fichiers en mode de récupération FULL ou BULK_LOGGED.

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

  • Le travail du lecteur du journal de la réplication n'a pas été exécuté. Consultez le livre blanc Stockage de FILESTREAM dans SQL Server 2008 (en anglais) pour plus d'informations.

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 collector FILESTREAM à l'achèvement sur la base de données demandée (et le conteneur FILESTREAM). Les fichiers qui ne sont plus nécessaires sont supprimés par le processus de garbage collection. La durée d'exécution de cette opération varie selon la taille des données FILESTREAM dans cette base de données ou ce conteneur, ainsi qu'en fonction de l'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 des différentes activités d'entrées/sorties effectuées par le processus de garbage collection.

[!REMARQUE]

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.

Autorisations

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

Exemples

Les exemples suivants exécutent le garbage collector pour les conteneurs FILESTREAM dans la base de données FSDB.

A.Absence de spécification d'un conteneur

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

B.Spécification d'un conteneur

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

Voir aussi

Autres ressources

Stockage FILESTREAM dans SQL Server 2008