Condividi tramite


Usare l'opzione BINARY BASE64

Se nella query è specificata l'opzione BINARY BASE64, i dati binari verranno restituiti con la codifica Base64. Per impostazione predefinita, se l'opzione BINARY BASE64 non è specificata, la modalità AUTO supporta la codifica URL dei dati binari. Ovvero, anziché i dati binari, viene restituito un riferimento a un URL relativo alla radice virtuale del database in cui è stata eseguita la query. Questo riferimento può essere usato per accedere ai dati binari effettivi nelle operazioni successive usando la query dbobject ISAPI SQLXML. La query deve fornire informazioni sufficienti, ad esempio colonne di chiave primaria, per identificare l'immagine.

Se si specifica una query, se viene usato un alias per la colonna binaria della vista, l'alias viene restituito nella codifica URL dei dati binari. Nelle operazioni successive, l'alias è privo di significato e la codifica URL non può essere usata per recuperare l'immagine. Pertanto, non utilizzare alias durante l'esecuzione di query su una vista utilizzando la modalità FOR XML AUTO.

Ad esempio, in una query SELECT, effettuare il cast di qualsiasi colonna in un oggetto grande binario (BLOB) lo rende un'entità temporanea, poiché perde il nome della tabella e della colonna a cui era associato. In questo modo le query in modalità AUTO generano un errore, perché non sa dove inserire questo valore nella gerarchia XML. Per esempio:

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

Questa query genera un errore, a causa della conversione in un oggetto grande binario (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. Se si rimuove il cast, la query produce i risultati come previsto:

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

Risultato:

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

Vedere anche

Usare la modalità AUTO con FOR XML