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