Partager via


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 les données FILESTREAM.

Notes

Les exemples de cette rubrique nécessitent 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.

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

Pour ajouter une ligne à une table qui prend 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

Quand vous sélectionnez toutes les données de la table Archive,dbo.Records table, les résultats sont similaires aux résultats affichés dans le tableau suivant. 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

Mise à jour de données FILESTREAM

Vous pouvez utiliser Transact-SQL pour mettre à jour les données dans le fichier de système de fichiers ; toutefois, vous ne souhaiterez peut-être pas le faire lorsque vous devez diffuser en continu de grandes quantités de données vers un fichier.

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;

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 donc 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é.

Notes

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

Voir aussi

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