Pergunta

Acabamos de mudar para sinônimos para coisas do servidor vinculado e notamos que nossa saída para XML não está mais correta. Ao retornar os resultados do XML de uma visualização, poderíamos alias a visualização e isso seria atribuído como o nome do elemento. Com sinônimos, no entanto, parece ignorar o pseudônimo? Ainda estamos principalmente no SQL 2005 - esse bug não parece acontecer em nossa instância de 2008. Isso é um problema conhecido e alguma idéia para as atividades de trabalho?

Por exemplo, é isso que costumávamos fazer:

select top 3 number from Numbers as elementname for xml auto

<elementname number="0"/><elementname number="1"/><elementname number="2"/>

E é isso que acontece com um sinônimo:

select top 3 number from Numbers_synonym as elementname for xml auto 

<dbo.Numbers number="0"/><dbo.Numbers number="1"/><dbo.Numbers number="2"/>

Como você pode ver, o SQL Server parece usar o nome do objeto referenciado real em vez do alias. Isso piora para as consultas do servidor cruzado, porque você obtém o nome de quatro partes em vez do bom pseudônimo. (por exemplo: <rick_server.rick_database.dbo.Numbers number="0"/>...)

Foi útil?

Solução

As vezes FOR XML AUTO Faz a "coisa errada" - você pode controlar o nome do elemento XML se usar o fracionalmente mais detalhado:

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top