0

我们刚刚切换到链接服务器的同义词,并注意到我们的 FOR XML 输出不再正确。当从视图返回 XML 结果时,我们可以为视图设置别名,并将其分配为元素名称。但是,对于同义词,它似乎忽略了别名?我们仍然主要使用 SQL 2005 - 这个错误似乎不会发生在我们的 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 Server 似乎使用实际引用对象的名称而不是别名。这对于跨服务器查询变得更糟,因为您获得的是四部分名称而不是漂亮的别名。(例如:<rick_server.rick_database.dbo.Numbers number="0"/>...)

4

1 回答 1

1

有时会FOR XML AUTO做“错误的事情” - 如果您使用稍微更详细的部分,您可以控制 XML 元素名称:

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
于 2011-01-10T15:39:51.730 回答