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:
|
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';