使用针对的代名词XML AUTO
-
27-09-2019 - |
题
我们刚刚切换到同义词链接服务器的东西,并注意到我们的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
不隶属于 StackOverflow