Вопрос

Мы только что переключились на синонимы для связанного сервера, и заметили, что наш для вывода 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"/>...)

Это было полезно?

Решение

Иногда FOR XML AUTO Есть ли «неправильная вещь» - вы можете управлять именем элемента XML, если вы используете фракционно более Verbose:

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top