Použití možnosti BINARY BASE64
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Pokud je v dotazu zadána možnost BINARY BASE64, binární data se vrátí ve formátu kódování base64.
Pokud není v dotazu zadána možnost BINARY BASE64, režim AUTO ve výchozím nastavení podporuje kódování adresy URL binárních dat. Vrátí se odkaz na relativní adresu URL virtuálního kořenového adresáře databáze. Tento odkaz je na databázi, ve které byl dotaz proveden. Vrácený odkaz lze použít pro přístup k skutečným binárním datům v následných operacích. Tento přístup se dosahuje pomocí dbobject
dotazu SQLXML ISAPI. Dotaz musí poskytnout dostatek informací k identifikaci obrázku. Tyto informace můžou zahrnovat sloupce primárního klíče.
Alias sloupce
Nepoužívejte alias pro binární sloupec, když dotazujete zobrazení a zároveň používáte režim FOR XML AUTO. Pokud používáte alias, vrátí se alias v URL kódování binárních dat. V následných operacích je alias nesmyslný. K načtení obrázku se nedá použít bezvýznamný alias a kódování adresy URL.
Převod na BLOB
Přetypování libovolného sloupce do binárního velkého objektu (BLOB) v dotazu SELECT způsobí, že sloupec je dočasnou entitou. Objekt BLOB je dočasný, ztratí přidružený název tabulky a název sloupce. Toto přetypování způsobí, že dotazy v režimu AUTO vygenerují chybu, protože systém neví, kam tuto hodnotu umístit do hierarchie XML.
Představte si například následující tabulku s jedním řádkem.
CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)
INSERT INTO MyTable VALUES (1, 0x7);
Následující dotaz vytvoří chybu, která je způsobena přetypováním na binární velký objekt (BLOB):
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO;
Řešením je přidat do klauzule FOR XML možnost BINARY BASE64. Pokud přetypování odeberete, dotaz vytvoří dobré výsledky.
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO, BINARY BASE64;
Očekáváme následující dobrý výsledek:
<MyTable Col1="1" Col2="Bw==" />