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.

Remarque

Les exemples de cette rubrique nécessitent la base de données et la table compatibles FILESTREAM créées dans Créer une base de données FILESTREAM-Enabled et créer une table pour le stockage des 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 NULL ou une varbinary(max) valeur.

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 Zero-Length

L’exemple suivant montre comment utiliser INSERT pour créer un enregistrement de longueur nulle. Cela est utile lorsque vous souhaitez obtenir un handle de fichier, mais que vous manipulerez le fichier à l’aide d’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 montre comment utiliser INSERT pour créer un fichier qui contient 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 à partir du Archive. dbo.Records tableau, les résultats sont similaires aux résultats affichés dans le tableau suivant. Toutefois, la Id colonne contiendra divers GUID.

Id Numéro de série Reprendre
C871B90F-D25E-47B3-A560-7CC0CA405DAC 1 NULL
F8F5C314-0559-4927-8FA9-1535EE0BDF50 2 0x
7F680840-B7A4-45D4-8CD5-527C44D35B3F 3 0x536569736D69632044617461

Mise à jour des données FILESTREAM

Vous pouvez utiliser Transact-SQL pour mettre à jour les données dans le fichier du système de fichiers ; bien que, vous ne souhaiterez peut-être pas effectuer cette opération lorsque vous devez diffuser en continu de grandes quantités de données dans 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 par conséquent le fichier, consiste à utiliser l’instruction Transact-SQL DELETE.

L’exemple suivant montre comment supprimer une ligne et ses fichiers de système de fichiers associés.

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

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

Remarque

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