Compartilhar via


Usar a opção BINARY BASE64

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

A opção BINARY BASE64 é especificada na consulta. Os dados binários são retornados no formato de codificação na base64.

Se a opção BINARY BASE64 não for especificada na consulta, por padrão, o modo AUTO oferecerá suporte à codificação de URL de dados binários. Uma referência a uma URL relativa para a raiz virtual do banco de dados é retornada. Essa referência é para o banco de dados em que a consulta foi executada. A referência retornada pode ser usada para acessar os dados binários reais em operações subsequentes. Esse acesso é obtido ao usar a consulta dbobject do SQLXML ISAPI. A consulta deve fornecer informações suficientes para identificar a imagem. Essas informações podem incluir as colunas da chave primária.

Alias de coluna

Não use um alias para uma coluna binária ao consultar uma visualização e usar o modo FOR XML AUTO. Se você usar um alias, ele será retornado na codificação de URL dos dados binários. Em operações subsequentes, o alias não faz sentido. O alias sem sentido e a codificação de URL não podem ser usados ​​para recuperar a imagem.

Converter em um BLOB

Em uma consulta SELECT, a conversão de qualquer coluna em um blob (objeto binário grande) torna a coluna uma entidade temporária. Sendo temporário, o blob perde seu nome de tabela e nome de coluna associados. Essa conversão faz com que as consultas no modo AUTO gerem um erro, porque o sistema não sabe onde colocar esse valor na hierarquia XML.

Por exemplo, considere a tabela a seguir com sua única linha.

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

A consulta a seguir produz um erro, causado pela conversão em um blob (objeto binário grande):

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

A solução é adicionar a opção BINARY BASE64 à cláusula FOR XML. Se você remover a conversão, a consulta produzirá bons resultados.

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

Espere o seguinte bom resultado:

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

Confira também

Usar o modo AUTO com FOR XML