0

リンクされたサーバーのものの同義語に切り替えたところ、FORXML出力が正しくなくなっていることに気づきました。ビューからXML結果を返す場合、ビューにエイリアスを付けることができ、それが要素名として割り当てられます。ただし、同義語では、エイリアスを無視しているようです。私たちはまだほとんどSQL2005を使用しています。このバグは、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は、エイリアスではなく、実際に参照されているオブジェクトの名前を使用しているようです。素敵なエイリアスの代わりに4つの部分からなる名前を取得するため、これはクロスサーバークエリではさらに悪化します。(例:<rick_server.rick_database.dbo.Numbers number="0"/>...)

4

1 に答える 1

1

FOR XML AUTO「間違ったこと」を行うことがあります。部分的に冗長なものを使用すると、XML要素名を制御できます。

SELECT TOP 3 number
FROM Numbers_synonym
FOR XML PATH('elementname'), TYPE
于 2011-01-10T15:39:51.730 に答える