我们刚刚切换到链接服务器的同义词,并注意到我们的 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"/>
...)