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 回答