我们刚刚切换到同义词链接服务器的东西,并注意到我们的FOR XML输出不再正确。当从视图中返回XML结果,我们可以别名观点和将被指定为元素名称。随着同义词,但是,它似乎忽略别名?我们仍然主要是在SQL 2005 - 这个bug似乎并没有对我们2008年的情况发生。这是一个已知的问题,并为变通的任何想法?

例如,这就是我们使用能够做到:

select top 3 number from Numbers as elementname for xml auto

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

这是用同义词会发生什么:

select top 3 number from Numbers_synonym as elementname for xml auto 

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

正如你所看到的,SQL服务器似乎用实际引用的对象,而不是别名的名称。这对于跨服务器的查询变得更糟糕,因为你得到的四部分名称,而不是漂亮的别名。 (例如:<rick_server.rick_database.dbo.Numbers number="0"/> ...)

有帮助吗?

解决方案

有时FOR XML AUTO做了“错误的东西” - 如果你使用的分数更详细的,你可以控制XML元素名称:

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top