我目前正在执行从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对象。