XML AUTO查询以90或更高版本的兼容模式返回派生表引用

时间:2018-09-21 13:15:13

标签: sql sql-server xml sql-server-2005 sql-server-2012

我目前正在执行从2005年到2012年的SQL Server迁移。作为第一步,我生成了DMA报告,并观察到大多数使用XML Auto的过程都属于该报告。

MSDN 提供以下信息:

当数据库兼容性级别设置为90或更高时,在AUTO模式下执行的FOR XML查询将返回对派生表别名的引用。兼容性级别设置为80时,FOR XML AUTO查询返回对定义派生表的基表的引用。

考虑以下查询,在2005年和2012年(及更高版本)中,输出将有所不同

SELECT * FROM (SELECT a.id AS a, b.id AS b 
FROM Test a 
JOIN Test b ON a.id=b.id) AS DerivedTest 
FOR XML AUTO;

2005 <a a="1"><b b="1"/></a><a a="2"><b b="2"/></a>

2012 <DerivedTest a="1" b="1"/><DerivedTest a="2" b="2"/>

现在的问题是,2005和2012版本都给我相同的输出

<DerivedTest a="1" b="1"/><DerivedTest a="2" b="2"/>

需要您的帮助来确认是否需要修复受影响的Tsql对象。

MSDN网址:https://docs.microsoft.com/en-us/sql/sql-server/install/for-xml-auto-queries-return-derived-table-references-90-later-compatibility-mode?view=sql-server-2014&viewFallbackFrom=sql-server-2017

0 个答案:

没有答案