同義語に対してXML Autoを使用します
-
27-09-2019 - |
質問
リンクされたサーバーのものの同義語に切り替えたばかりで、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はエイリアスの代わりに実際に参照されるオブジェクトの名前を使用しているようです。これは、Cross Serverクエリの場合に悪化します。これは、素敵なエイリアスの代わりに4部構成の名前を取得するためです。 (例えば: <rick_server.rick_database.dbo.Numbers number="0"/>
...)
解決
時々 FOR XML AUTO
「間違ったこと」を行います - 分数よりも冗長性を使用する場合、XML要素名を制御できます。
SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
所属していません StackOverflow