Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se a opção BINARY BASE64 for especificada na consulta, os dados binários serão retornados no formato de codificação base64. Por padrão, se a opção BINARY BASE64 não for especificada, o modo AUTO oferecerá suporte à codificação de URL de dados binários. Ou seja, em vez de dados binários, uma referência a uma URL relativa à raiz virtual do banco de dados em que a consulta foi executada é retornada. Essa referência pode ser usada para acessar os dados binários reais em operações subsequentes usando a consulta dbobject ISAPI do SQLXML. A consulta deve fornecer informações suficientes, como colunas de chave primária, para identificar a imagem.
Ao especificar uma consulta, se um alias for usado para a coluna binária da exibição, o alias será retornado na codificação de URL dos dados binários. Nas operações subsequentes, o alias não tem sentido e a codificação de URL não pode ser usada para recuperar a imagem. Portanto, não use aliases ao consultar uma exibição usando o modo FOR XML AUTO.
Por exemplo, em uma consulta SELECT, a conversão de qualquer coluna em um BLOB (objeto binário grande) torna-a uma entidade temporária, pois ela perde o nome da tabela e o nome da coluna associados. Isso faz com que as consultas de modo AUTO gerem um erro, pois ele não sabe onde colocar esse valor na hierarquia XML. Por exemplo:
CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)
INSERT INTO MyTable VALUES (1, 0x7);
Essa consulta gera um erro devido à conversão para um objeto binário grande (BLOB).
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á os resultados conforme o esperado:
SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO, BINARY BASE64;
Este é o resultado:
<MyTable Col1="1" Col2="Bw==" />