結果セットをXMLで返す必要があり、これは正常に機能しますが、レコード数が増えると、xml出力はtruncated
になります。これがクエリです。
select t.id,t.name,t.address from test FOR XML AUTO, ROOT('Response'), ELEMENTS
ただし、次のように出力結果セットを増やすオプションを設定しました。
Tools --> Options --> Query Results --> SQL Server --> Results to Text --> Maximum
number of characters displayed in each column
Tools --> Options --> Results --> Maximum characters per column
しかし、それでも私は希望する結果を得ることができません。
私の解決策を提案してください
編集:ただし、XMLをクリックすると、別のクエリウィンドウで開き、すべてのxmlがここに表示されますが、切り捨てられたxmlではなくすべてのxmlが返されません。
ありがとう....
ManagementStudioとxmlの結果セットで同じ問題が発生しました。 SqlDataReaderを使用してc#でプログラム的に出力を取得することで、これを解決しました。
次のことを試してください。
Declare @xmldata xml
set @xmldata = (select ... From test for xml...)
select @xmldata as returnXml
私も同じ問題を抱えていました。クエリ結果の設定を[無制限]に変更しましたが、機能しませんでした。回避策があります。それほどきれいではありませんが、SQL Server Management Studioを引き続き使用して、結果を取得したい場合。クエリを微調整して、以下を使用して保存されたxmlを変換します。
convert(xml,'<xml><![CDATA[' + cast(MyColumnWithXml as varchar(max)) + ']]></xml>')
全文が返されます。最後にいくつかのフォーマットを行う必要があることに注意してください
これは私にとってはうまくいきました(SSMS 2012):ツール>オプション>クエリ結果> SQL Server>グリッドへの結果:再試行された最大文字数:XMLデータ:無制限。次に、グリッドの結果をファイルに保存しました。
SSMSオプションを変更した後もXML結果セットが切り捨てられる場合は、XMLステートメントを実行する前に:XMLONオプションを指定してSQLCMDユーティリティを使用してください。 -oスイッチを使用して、出力をファイルに送信します。 SQLCMDは、非常に簡単に使用できるコマンドラインユーティリティです。 http://msdn.Microsoft.com/en-us/library/ms162773.aspx を参照してください。
クエリ出力ウィンドウに表示されるXML出力は、実際には有効なXMLドキュメントを保存するためのものではありません。 ADOまたは.NETのSQLXML管理クラスを使用してストリームとしてキャプチャすると、SQLServerから有効なXMLを取得できます。
ただし、SQL Server Management Studioで、[ツール] >> [オプション] >> [クエリ結果] >> [SQL Server] >> [テキストへの結果] >> [各列に表示される最大文字数]に移動して、クエリの出力サイズを制限できます。
私はこの質問が10年前のように尋ねられたことを知っていますが、それでも誰かがDB側での変更を必要とせず、受け入れられた回答に少し似ているが、ではない回避策を探している場合SqlDataReader
。
DataTable
を利用し、SqlDataAdapter
を使用して入力することができます。 XML
データが複数の行に分割される場所。
例えば
string xmloutput = "";
var cmd = new SqlCommand("<some sql query that returns data in xml format>", con);
var da = new SqlDataAdapter(cmd);
var dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
foreach (DataRow dr in dt.Rows)
{
xmloutput += dr[0].ToString();
}
注:
DB
データを含むXML
から1つの列のみが返されることを前提としています。そして後で、変数xmloutput
を利用します。