Freigeben über


sp_filestream_force_garbage_collection (Transact-SQL)

Erzwingt die Ausführung des FILESTREAM-Garbage Collectors und löscht alle nicht benötigten FILESTREAM-Dateien.

Ein FILESTREAM-Container kann erst entfernt werden, wenn alle gelöschten Dateien darin vom Garbage Collector bereinigt wurden. Der FILESTREAM Garbage Collector wird automatisch ausgeführt. Wenn Sie einen Container jedoch vor der Ausführung des Garbage Collectors entfernen möchten, können Sie den Garbage Collector auch mit sp_filestream_force_garbage_collection manuell ausführen.

Gilt für: SQL Server (SQL Server 2012 bis aktuelle Version).

Syntax

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

Argumente

  • @dbname = database_name**'**
    Gibt den Namen der Datenbank an, für die der Garbage Collector ausgeführt werden soll.

    Hinweis

    dbname ist sysname.Fehlt die Angabe, wird die aktuelle Datenbank zugrunde gelegt.

  • @filename = logical_file_name
    Gibt den logischen Namen des FILESTREAM-Containers an, für den der Garbage Collector ausgeführt werden soll. @filename ist optional. Wenn kein logischer Dateiname angegeben wird, bereinigt der Garbage Collector alle FILESTREAM-Container in der angegebenen Datenbank.

Rückgabecodewerte

Wert

Beschreibung

0

Vorgang war erfolgreich.

1

Fehler beim Vorgang.

Resultsets

Wert

Beschreibung

file_name

Gibt den Namen des FILESTREAM-Containers an

num_collected_items

Gibt die Anzahl der FILESTREAM-Elemente (Dateien/Verzeichnisse) an, die vom Garbage Collector in diesem Container erfasst (gelöscht) wurden.

num_marked_for_collection_items

Gibt die Anzahl der FILESTREAM-Elemente (Dateien/Verzeichnisse) an, die für den Garbage Collector in diesem Container markiert wurden. Diese Elemente wurden noch nicht gelöscht, können jedoch möglicherweise in einer späteren Garbage Collection-Phase gelöscht werden.

num_unprocessed_items

Gibt die Anzahl der FILESTREAM-Elemente (Dateien oder Verzeichnisse) an, die nicht von der Garbage Collection in diesem FILESTREAM-Container erfasst wurden.

Elemente können aus unterschiedlichen Gründen nicht verarbeitet werden:

  • Dateien, die festgesetzt werden müssen, da noch keine Protokollsicherung oder CheckPoint ausgeführt wurden.

  • Dateien im FULL- oder BULK_LOGGED-Wiederherstellungsmodell.

  • Es liegt eine aktive Transaktion mit langer Ausführungszeit vor.

  • Der Protokollleseauftrag für die Replikation wurde nicht ausgeführt. Weitere Informationen finden Sie im Whitepaper FILESTREAM-Speicher in SQL Server 2008.

last_collected_xact_seqno

Gibt die letzte Sequenznummer (LSN) für den entsprechenden FILESTREAM-Container an, bis zu der die Dateien von der Garbage Collection erfasst wurden.

Hinweise

Führt den FILESTREAM-Garbage Collector für die betreffende Datenbank (und den FILESTREAM-Container) vollständig aus. Dateien, die nicht mehr benötigt werden, werden vom Garbage Collection-Prozess entfernt. Die Zeit, die benötigt wird, damit dieser Vorgang abgeschlossen werden kann, hängt vom Umfang der FILESTREAM-Daten in dieser Datenbank oder in diesem Container sowie vom Ausmaß der DML-Aktivität im Zusammenhang mit den FILESTREAM-Daten in jüngster Zeit ab. Diese Vorgang kann auch ausgeführt werden, während die Datenbank online ist. Dies kann sich jedoch aufgrund verschiedener E/A-Aktivitäten im Rahmen der Garbage Collection auf die Leistung der Datenbank auswirken.

Hinweis

Es wird empfohlen, diesen Vorgang nur bei Bedarf und außerhalb der üblichen Betriebsstunden auszuführen.

Mehrere Aufrufe dieser gespeicherten Prozedur können nur in separaten Containern oder separaten Datenbanken gleichzeitig ausgeführt werden.

Berechtigungen

Erfordert die Mitgliedschaft in der Datenbankrolle db_owner.

Beispiele

In den folgenden Beispielen wird der Garbage Collector für FILESTREAM-Container in der FSDB-Datenbank ausgeführt.

A.Angeben keines Containers

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

B.Angeben eines Containers

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

Siehe auch

Andere Ressourcen

FILESTREAM-Speicher in SQL Server 2008