Megosztás a következőn keresztül:


A BINÁRIS BASE64 beállítás használata

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ha a bináris ALAP64 beállítás meg van adva a lekérdezésben, a bináris adatok base64 kódolási formátumban lesznek visszaadva.

Ha a BINÁRIS BASE64 beállítás nincs megadva a lekérdezésben, akkor alapértelmezés szerint az AUTO mód támogatja a bináris adatok URL-kódolását. A rendszer az adatbázis virtuális gyökerére mutató relatív URL-címre mutató hivatkozást ad vissza. Ez a hivatkozás arra az adatbázisra hivatkozik, amelyben a lekérdezést végrehajtották. A visszaadott hivatkozás a későbbi műveletekben a tényleges bináris adatok elérésére használható. Ez a hozzáférés az SQLXML ISAPI dbobject lekérdezéssel érhető el. A lekérdezésnek elegendő információt kell biztosítania a kép azonosításához. Ezek az információk az elsődleges kulcs oszlopait is tartalmazhatják.

Oszlop aliasa

Ne használjon aliast bináris oszlophoz, amikor egy nézetet lekérdez, és FOR XML AUTO módot használ. Ha aliast használ, az alias a bináris adatok URL-kódolásában lesz visszaadva. A későbbi műveletekben az alias értelmetlen. Az értelmetlen alias és az URL-kódolás nem használható a kép lekérésére.

BLOB-típusra konvertálás

A SELECT lekérdezésekben az oszlopok bináris nagy objektumba (BLOB) való beolvasása ideiglenes entitássá teszi az oszlopot. Mivel ideiglenes, a BLOB elveszíti a társított táblanevet és oszlopnevet. Ez az automatikus módú lekérdezések hibát okoznak, mert a rendszer nem tudja, hol helyezze ezt az értéket az XML-hierarchiába.

Vegyük például az alábbi táblázatot egy sortal.

CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)
INSERT INTO MyTable VALUES (1, 0x7);

A következő lekérdezés hibát eredményez, amelyet egy bináris nagy objektumra (BLOB) történő öntés okoz:

SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO;

A megoldás az, hogy hozzáadja a BINÁRIS BASE64 beállítást a FOR XML záradékhoz. Ha eltávolítja az öntvényt, a lekérdezés jó eredményeket hoz.

SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO, BINARY BASE64;

Várjon a következő jó eredményre:

<MyTable Col1="1" Col2="Bw==" />

Lásd még:

AUTOMATIKUS mód használata AZ XML-