Zugreifen auf FILESTREAM-Daten mit Transact-SQL
In diesem Thema wird beschrieben, wie Sie die Transact-SQL-Anweisungen INSERT, UPDATE und DELETE zum Verwalten von FILESTREAM-Daten verwenden.
Hinweis
Für die Beispiele in diesem Thema sind die FILESTREAM-aktivierte Datenbank und die Tabelle erforderlich, die unter Erstellen einer FILESTREAM-aktivierten Datenbank und Erstellen einer Tabelle zum Speichern von FILESTREAM-Datenerstellt werden.
Einfügen einer Zeile mit FILESTREAM-Daten
Um einer Tabelle, die FILESTREAM-Daten unterstützt, eine Zeile hinzuzufügen, verwenden Sie die Insert-Anweisung von Transact-SQL. Wenn Sie Daten in eine FILESTREAM-Spalte einfügen, können Sie NULL oder einenvarbinary(max)
-Wert einfügen.
Einfügen von NULL
Im folgenden Beispiel wird gezeigt, wie NULL
eingefügt wird. Wenn der FILESTREAM-Wert NULL
ist, erstellt Datenbank-Engine keine Datei im Dateisystem.
INSERT INTO Archive.dbo.Records
VALUES (newid (), 1, NULL);
GO
Einfügen eines Datensatzes mit der Länge 0 (null)
Das folgende Beispiel veranschaulicht, wie mit INSERT
ein Datensatz mit der Länge 0 (null) erstellt wird. Dies ist hilfreich, wenn Sie ein Dateihandle abrufen müssen, die Datei jedoch durch die Verwendung von Win32-APIs geändert wird.
INSERT INTO Archive.dbo.Records
VALUES (newid (), 2,
CAST ('' as varbinary(max)));
GO
Erstellen einer Datendatei
Das folgende Beispiel veranschaulicht, wie mit INSERT
eine Datei mit Daten erstellt wird. Datenbank-Engine konvertiert die Zeichenfolge Seismic Data
in einen varbinary(max)
-Wert. FILESTREAM erstellt die Windows-Datei, falls diese noch nicht erstellt wurde. Die Daten werden dann der Datendatei hinzugefügt.
INSERT INTO Archive.dbo.Records
VALUES (newid (), 3,
CAST ('Seismic Data' as varbinary(max)));
GO
Wenn Sie alle Daten in der Tabelle Archive
.dbo.Records
die Ergebnisse ähneln den Ergebnissen, die in der folgenden Tabelle angezeigt werden. Die Id
-Spalte enthält jedoch andere GUIDs.
Id | SerialNumber | Fortsetzen |
---|---|---|
C871B90F-D25E-47B3-A560-7CC0CA405DAC |
1 |
NULL |
F8F5C314-0559-4927-8FA9-1535EE0BDF50 |
2 |
0x |
7F680840-B7A4-45D4-8CD5-527C44D35B3F |
3 |
0x536569736D69632044617461 |
Aktualisieren von FILESTREAM-Daten
Sie können Transact-SQL verwenden, um die Daten in der Dateisystemdatei zu aktualisieren. Dies ist jedoch möglicherweise nicht ratsam, wenn Sie große Datenmengen in eine Datei streamen müssen.
Im folgenden Beispiel wird der gesamte Text im Dateidatensatz durch den Text Xray 1
ersetzt.
UPDATE Archive.dbo.Records
SET [Chart] = CAST('Xray 1' as varbinary(max))
WHERE [SerialNumber] = 2;
Löschen von FILESTREAM-Daten
Wenn Sie eine Zeile mit einem FILESTREAM-Feld löschen, löschen Sie auch die zugrunde liegenden Dateisystemdateien. Die einzige Möglichkeit zum Löschen einer Zeile und damit der Datei besteht darin, die Delete-Anweisung von Transact-SQL zu verwenden.
Im folgenden Beispiel wird das Löschen einer Zeile und der entsprechenden Dateisystemdateien veranschaulicht.
DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO
Wenn Sie alle Daten in der Tabelle dbo.Archive
auswählen, sollten Sie sehen, dass die Zeile gelöscht wurde. Sie können die zugeordnete Datei nicht mehr verwenden.
Hinweis
Die zugrunde liegenden Dateien werden vom FILESTREAM Garbage Collector entfernt.
Weitere Informationen
Aktivieren und Konfigurieren von FILESTREAM
Vermeiden von Konflikten mit Datenbankvorgängen in FILESTREAM-Anwendungen