ZUgreifen auf FILESTREAM-Daten mit Transact-SQL

In diesem Thema erfahren Sie, wie Sie FILESTREAM-Daten mit den Transact-SQL-Anweisungen INSERT, UPDATE und DELETE verwalten.

HinweisHinweis

Für die Beispiele in diesem Thema werden die FILESTREAM-aktivierte Datenbank und die Tabelle vorausgesetzt, die in Erstellen einer FILESTREAM-aktivierten Datenbank und Erstellen einer Tabelle zum Speichern von FILESTREAM-Daten erstellt werden.

In diesem Thema

  • Einfügen einer Zeile mit FILESTREAM-Daten

  • Aktualisieren von FILESTREAM-Daten

  • Löschen von FILESTREAM-Daten

Einfügen einer Zeile mit FILESTREAM-Daten

Zum Hinzufügen einer Zeile in einer Tabelle, die FILESTREAM-Daten unterstützt, verwenden Sie die Transact-SQL-Anweisung INSERT. 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 Database Engine (Datenbankmodul) 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. Database Engine (Datenbankmodul) konvertiert die Zeichenfolge Seismic Datain 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 auswählen, sollten ähnliche Ergebnisse wie 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

[NACH OBEN]

Aktualisieren von FILESTREAM-Daten

Sie können Transact-SQL zum Aktualisieren der Daten in der Dateisystemdatei verwenden. Dies ist jedoch nicht empfehlenswert, 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;

[NACH OBEN]

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 somit der Datei, ist die Transact-SQL-Anweisung DELETE.

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.

HinweisHinweis

Die zugrunde liegenden Dateien werden vom FILESTREAM Garbage Collector entfernt.

[NACH OBEN]

Siehe auch

Konzepte

Aktivieren und Konfigurieren von FILESTREAM

Vermeiden von Konflikten mit Datenbankvorgängen in FILESTREAM-Anwendungen