Accéder aux données FILESTREAM avec Transact-SQL

Cette rubrique explique comment utiliser les instructions Transact-SQL INSERT, UPDATE et DELETE pour gérer des données FILESTREAM.

[!REMARQUE]

Les exemples dans cette rubrique requièrent la base de données compatible FILESTREAM et la table qui sont créées dans Créer une base de données compatible FILESTREAM et Créer une table pour le stockage de données FILESTREAM.

Dans cette rubrique

  • Insertion d'une ligne qui contient des données FILESTREAM

  • Mise à jour de données FILESTREAM

  • Suppression de données FILESTREAM

Insertion d'une ligne qui contient des données FILESTREAM

Pour ajouter une ligne à une table prenant en charge les données FILESTREAM, utilisez l'instruction Transact-SQL INSERT. Lorsque vous insérez des données dans une colonne FILESTREAM, vous pouvez insérer une valeur NULL ou varbinary(max).

Insertion de NULL

L'exemple suivant montre comment insérer NULL. Lorsque la valeur FILESTREAM est NULL, le Moteur de base de données ne crée pas de fichier dans le système de fichiers.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 1, NULL);
GO

Insertion d'un enregistrement de longueur nulle

L'exemple suivant illustre l'utilisation de INSERT pour créer un enregistrement de longueur nulle. C'est utile lorsque vous souhaitez obtenir un descripteur de fichier, mais que vous manipulerez le fichier en utilisant des API Win32.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 2, 
      CAST ('' as varbinary(max)));
GO

Création d'un fichier de données

L'exemple suivant illustre l'utilisation de INSERT pour créer un fichier contenant des données. Le Moteur de base de données convertit la chaîne Seismic Data en valeur varbinary(max). FILESTREAM crée le fichier Windows s'il n'existe pas déjà. Les données sont ensuite ajoutées au fichier de données.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 3, 
      CAST ('Seismic Data' as varbinary(max)));
GO

Lorsque vous sélectionnez toutes les données de la table Archive.dbo.Records, les résultats sont semblables à ceux affichés dans la table suivante. Toutefois, la colonne Id contiendra des GUID différents.

Id

SerialNumber

Reprendre

C871B90F-D25E-47B3-A560-7CC0CA405DAC

1

NULL

F8F5C314-0559-4927-8FA9-1535EE0BDF50

2

0x

7F680840-B7A4-45D4-8CD5-527C44D35B3F

3

0x536569736D69632044617461

[Haut de la page]

Mise à jour de données FILESTREAM

You can use Transact-SQL to update the data in the file system file; although, you might not want to do this when you have to stream large amounts of data to a file.

L'exemple suivant remplace tout texte dans l'enregistrement de fichier par le texte Xray 1.

UPDATE Archive.dbo.Records
SET [Chart] = CAST('Xray 1' as varbinary(max))
WHERE [SerialNumber] = 2;

[Haut de la page]

Suppression de données FILESTREAM

Lorsque vous supprimez une ligne qui contient un champ FILESTREAM, vous supprimez également ses fichiers de système de fichiers sous-jacents. La seule façon de supprimer une ligne, et par conséquent le fichier, consiste à utiliser l'instruction Transact-SQL DELETE.

L'exemple suivant montre comment supprimer une ligne et les fichiers de système de fichiers qui lui sont associés.

DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO

Lorsque vous sélectionnez toutes les données de la table dbo.Archive, la ligne disparaît. Vous ne pouvez plus utiliser le fichier associé.

[!REMARQUE]

Les fichiers sous-jacents sont supprimés par le garbage collector FILESTREAM.

[Haut de la page]

Voir aussi

Concepts

Activer et configurer FILESTREAM

Éviter les conflits avec les opérations de base de données dans les applications FILESTREAM