Utiliser l’option BINARY BASE64
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Si l'option BINARY BASE64 est spécifiée dans la requête, les données binaires sont renvoyées dans un format encodé en base 64.
Si l’option BINARY BASE64 n’est pas spécifiée dans la requête, le mode AUTO prend en charge l’encodage d’URL des données binaires par défaut. Une référence à une URL relative vers la racine virtuelle de la base de données est retournée. Cette référence concerne la base de données où la requête a été exécutée. La référence retournée peut être utilisée pour accéder aux données binaires réelles lors les opérations ultérieures. Cet accès est obtenu à l’aide de la requête ISAPI dbobject
SQLXML. La requête doit fournir suffisamment d’informations pour identifier l’image. Ces informations peuvent inclure les colonnes de la clé primaire.
Alias de colonne
N’utilisez pas d’alias pour une colonne binaire lorsque vous interrogez une vue et utilisez le mode AUTO FOR XML. Si vous utilisez un alias, l’alias est retourné dans l’encodage URL des données binaires. Dans les opérations suivantes, l’alias ne signifie rien. L’alias sans signification et l’encodage d’URL ne peuvent pas être utilisés pour récupérer l’image.
Cast en objet blob
Dans une requête SELECT, le cast d’une colonne en objet blob transforme la colonne en une entité temporaire. Étant temporaire, l’objet blob perd son nom de table et son nom de colonne associés. Ce cast entraîne la génération d’une erreur par les requêtes en mode AUTO, car le système ne sait pas où placer cette valeur dans la hiérarchie XML.
Par exemple, considérons la table suivante avec sa seule ligne.
CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)
INSERT INTO MyTable VALUES (1, 0x7);
La requête suivante produit une erreur en raison du cast en objet blob :
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO;
La solution consiste à ajouter l'option BINARY BASE64 dans la clause FOR XML. Si vous supprimez le cast, la requête produit les bons résultats.
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO, BINARY BASE64;
Voici le bon résultat attendu :
<MyTable Col1="1" Col2="Bw==" />
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour