1

使用这种技术,我正在汇集大量记录,这些记录要作为 XML 从 .NET 4.0 应用程序传递到 SQL Server (2008R2) proc。proc 准备 XML 并使用 OPENXML 加入它(或者至少当我让它工作时)。

当代码执行时,.NET 似乎正确地构建了参数并将其添加到 SQL 命令中,但是当它调用 SQL Server 时,SQL Profiler 将参数显示为空。

exec jcsdmp_UpdateMultiDocumentSendStatus @pUpdateStatusesXML=NULL

调用代码:

SqlParameter[] UpdateParams = new SqlParameter[1];
UpdateParams[0] = new SqlParameter("@pUpdateStatusesXML", SqlDbType.NText, sb.ToString().Length, sb.ToString());

SqlAccess.ExecuteNonQuery("docmgmt", "jcsdmp_UpdateMultiDocumentSendStatus", CommandType.StoredProcedure, UpdateParams);

是的,我一直在研究自定义 SqlAccess 类(主要检查参数、打开连接等——没有真正的魔法),但到目前为止,.NET 认为它正在发送参数......

是否有我可能缺少的尺寸限制或类似的东西?

4

1 回答 1

2

对于您使用的SqlParameter构造函数重载,第四个参数不是值而是源列

您是否尝试过使用接受 value 的构造函数重载,它会推断类型和大小?

UpdateParams[0] = new SqlParameter("@pUpdateStatusesXML", sb.ToString());

如果需要,您可以在此之后显式设置 SqlDbType(它可能会推断 NVarChar):

UpdateParams[0].SqlDbType = SqlDbType.NText;
于 2012-04-17T21:56:07.577 回答