Запросы XML AUTO возвращают ссылки на производные таблицы в режимах совместимости 90 или более поздней версии. - PullRequest
0 голосов
/ 21 сентября 2018

В настоящее время я выполняю миграцию сервера SQL с 2005 по 2012 год. В качестве первого шага я сгенерировал отчет DMA и заметил, что большинство процедур, использующих XML Auto, являются частью этого отчета.

MSDN предоставляет следующую информацию:

Когда уровень совместимости базы данных установлен на 90 или выше, запросы FOR XML, которые выполняются в режиме AUTO, возвращают ссылки на псевдонимы производной таблицы.,Если для уровня совместимости задано значение 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 должны быть исправлены или нет.

URL-адрес 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

...