Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn die OPTION BINARY BASE64 in der Abfrage angegeben wird, werden die Binärdaten im Base64-Codierungsformat zurückgegeben. Wenn die OPTION BINARY BASE64 nicht angegeben ist, unterstützt der AUTO-Modus standardmäßig die URL-Codierung von Binärdaten. Das heißt, anstelle von Binärdaten wird ein Verweis auf eine relative URL zum virtuellen Stamm der Datenbank, in der die Abfrage ausgeführt wurde, zurückgegeben. Dieser Verweis kann verwendet werden, um mithilfe der SQLXML ISAPI-Dbobject-Abfrage auf die tatsächlichen Binärdaten in nachfolgenden Vorgängen zuzugreifen. Die Abfrage muss genügend Informationen bereitstellen, z. B. Primärschlüsselspalten, um das Bild zu identifizieren.
Wenn bei der Angabe einer Abfrage ein Alias für die binäre Spalte der Ansicht verwendet wird, wird der Alias in der URL-Codierung der Binärdaten zurückgegeben. Bei nachfolgenden Vorgängen ist der Alias bedeutungslos, und die URL-Codierung kann nicht zum Abrufen des Bilds verwendet werden. Verwenden Sie daher beim Abfragen einer Ansicht mit DEM AUTO-Modus FÜR XML keine Aliase.
Wenn Sie beispielsweise in einer SELECT-Abfrage eine beliebige Spalte in ein binäres großes Objekt (BLOB) umwandeln, wird sie zu einer temporären Entität, in der der zugeordnete Tabellenname und spaltenname verloren geht. Dies bewirkt, dass AUTO-Modus-Abfragen einen Fehler generieren, da sie nicht weiß, wo dieser Wert in der XML-Hierarchie abgelegt werden soll. Beispiel:
CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)
INSERT INTO MyTable VALUES (1, 0x7);
Diese Abfrage erzeugt einen Fehler aufgrund der Umwandlung in ein binäres großes Objekt (BLOB):
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO;
Die Lösung besteht darin, der FOR XML-Klausel die OPTION BINARY BASE64 hinzuzufügen. Wenn Sie das Casting entfernen, erzeugt die Abfrage die Ergebnisse wie erwartet.
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO, BINARY BASE64;
Dies ist das Ergebnis:
<MyTable Col1="1" Col2="Bw==" />