Utilizzo dell'opzione BINARY BASE64Use the BINARY BASE64 Option

Se nella query è specificata l'opzione BINARY BASE64, i dati binari verranno restituiti con la codifica Base64.If the BINARY BASE64 option is specified in the query, the binary data is returned in base64 encoding format. Per impostazione predefinita, se l'opzione BINARY BASE64 non viene specificata la modalità AUTO supporta la codifica URL dei dati binari,By default, if the BINARY BASE64 option is not specified, AUTO mode supports URL encoding of binary data. ovvero, al posto dei dati binari viene restituito un riferimento a un URL relativo alla radice virtuale del database in cui è stata eseguita la query.That is, instead of binary data, a reference to a relative URL to the virtual root of the database where the query was executed is returned. Tale riferimento può essere utilizzato per accedere ai dati binari effettivi nelle operazioni successive, tramite la query SQLXML ISAPI dbobject.This reference can be used to access the actual binary data in subsequent operations by using the SQLXML ISAPI dbobject query. La query deve restituire una quantità di informazioni sufficiente per l'identificazione dell'immagine, ad esempio le colonne chiave primarie.The query must provide enough information, such as primary key columns, to identify the image.

Quando si specifica una query, se per la colonna di dati binari della vista viene utilizzato un alias, tale alias verrà restituito nella codifica URL dei dati binari.In specifying a query, if an alias is used for the binary column of the view, the alias is returned in the URL encoding of the binary data. Nelle operazioni successive l'alias non è importante e non sarà possibile utilizzare la codifica URL per recuperare l'immagine.In subsequent operations, the alias is meaningless, and the URL encoding cannot be used to retrieve the image. Non utilizzare pertanto gli alias per l'esecuzione di query su una vista utilizzando la modalità AUTO della clausola FOR XML.Therefore, do not use aliases when querying a view using FOR XML AUTO mode.

In una query SELECT, il cast di una colonna qualsiasi a una colonna BLOB (Binary Large Object) rende tale query un'entità temporanea, ovvero i relativi nomi di tabella e colonna associati verranno persi.For example, in a SELECT query, casting any column to a binary large object (BLOB) makes it a temporary entity in that it loses its associated table name and column name. La query in modalità AUTO genererà pertanto un errore in quanto non sarà in grado di determinare la posizione in cui inserire questo valore nella gerarchia XML.This causes AUTO mode queries to generate an error, because it does not know where to put this value in the XML hierarchy. Esempio:For example:

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

Questa query genera un errore a causa del cast a un tipo BLOB:This query produces an error, because of the casting to a binary large object (BLOB):

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

Per risolvere il problema, è possibile aggiungere l'opzione BINARY BASE64 alla clausola FOR XML.The solution is to add the BINARY BASE64 option to the FOR XML clause. Se si rimuove il casting, la query darà i risultati previsti:If you remove the casting, the query produces the results as expected:

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

Risultato:This is the result:

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

Vedere ancheSee Also

Utilizzo della modalità AUTO con FOR XMLUse AUTO Mode with FOR XML