0

CLR を SQL Server 2008 と統合していますが、正常に構成されています。しかし、私はこの SqlProcedure 内で Web サービスを呼び出しています。

コードは次のとおりです。xml 応答を返そうとしました。

[Microsoft.SqlServer.Server.SqlProcedure]
public static void SendReceiveAsXML(SqlString request)
{
    SqlPipe sp;
    sp = SqlContext.Pipe;
    MsgWS obj = new MsgWS();
    string s = obj.SendAndReceiveAsXml(request.ToString());

    sp.Send(s);

}

「最大長超過例外」の可能性があります。これを防ぐには、応答をリーダーとして取得する必要があります。これは、SQL と統合しているエンド コンポーネントの要件です。

ここに画像の説明を入力

どんな提案でも大歓迎です。

4

1 に答える 1

3

Pipe.Send(string)メッセージをクライアントに返すためのものです。このような大きなテキストの場合、おそらく を作成してSqlDataRecord、これを結果セットとしてクライアントに返す必要があります。これにより、効果的に列として返すことができvarchar(max)ます。


したがって、メソッドの最後を次のように編集します。

string s = obj.SendAndReceiveAsXml(request.ToString());

var md = new SqlMetaData("ColumnA", SqlDbType.VarChar, -1);
var row = new SqlDataRecord(md);
row.SetString(0, s);

sp.Send(row);
于 2012-10-09T07:37:06.773 に答える