0

この問題に対するさまざまな解決策を見つけましたが、うまくいかないようです。約 6 つのネストされた行を含む単一の結果を返すクエリがあります。大まかな形状は次のとおりです。

<ItemGroup> 
  <Item />
  <Item />
  <Item />
  <Item />
</ItemGroup> 

各項目には約 8 つの要素があります。FOR XML AUTO, TYPE を使用して XML を生成しています。クエリには、内部の行を生成するためのネストされたクエリがあります。ここまでは順調ですね。ただし、クエリを実行すると、XML は常に256 文字でトリミングされます。これを修正するための最初の提案は、XML データを [ツール]、[オプション]、[クエリ結果]、[SQL Server]、[グリッドへの結果]、[XML データ] で返される最大サイズを無制限 (または 5MB、両方で十分) に変更することです。理にかなっているようです。うまくいきませんでした。

グリッドに出力すると、閉じられていない文字列に関するエラーが発生します。

閉じられていないリテラル

次の修正の試みは、結果をファイルに出力することでした。そこに返されるデータの量 (最大) を変更するオプションが表示されないため、無制限であると想定しています。ただし、結果をファイルにダンプすると、結果テキストが 1 行 x 256 列になるというまったく同じ問題が発生しました。

これは修正できますか?これは SSMS 2014 のバグですか? 正確なバージョンは 12.0.2000.8 です。次のステップは、結果の行を node.js スクリプトに送信し、代わりにそこで XML を操作することです。

編集:ノードを介してクエリを実行しましたが、行っていたシェーピングFOR XML AUTO, TYPEは明らかにおかしいです。結果のドキュメントは 35MB でした。しかし、シェーピングなしでクエリを実行すると、9 行の結果セットが得られます。それでも、ファイルに直接出力する場合でも、SSMS でそれを理解することはできませんでした。

4

1 に答える 1

0

1か月経ちましたが、これに対する解決策はあまりありませんでした。私の本当の解決策は、使用しないことFOR XML AUTO, TYPEでした。壊れているからではなく、簡単に間抜けになり、不可解なデバッグのサイクルが長くなるからです。SQL で XML を形成する方法を本当に理解する必要がない限り、手動で (私の場合は Node で) XML を形成することをお勧めします。なぜ私がそのようにしたのか興味がある場合は、上記のコメントを読んでください。

于 2015-08-18T17:56:13.560 に答える