修复:如果输入消息包含空元素,则基于 WCF 的 SQL 适配器在 BizTalk Adapter Pack 中错误插入 NULL 值

应用对象
BizTalk Adapters

本文适用于以下产品:

  • Microsoft BizTalk Adapter Pack 2.0
  • Microsoft BizTalk Adapter Pack 2010
  • 适用于 SQL Server 的基于 WCF 的独立 BizTalk Adapter

症状

请考虑以下情形:

  • 请创建一个发送端口,它使用 Windows Communication Foundation (基于 WCF) 的 SQL 适配器来调用在 Microsoft SQL Server 表的列中插入行的存储过程。 表的列不能存储 NULL 值。

    注意:Microsoft BizTalk Adapter Pack 2010 中包含基于 WCF 的 SQL 适配器。

  • 到达发送端口的输入消息具有空元素。

    例如,消息具有 <ns0:input></ns0:input> 或 <ns0:input/> 空元素。

在此方案中,类似于以下内容的错误消息将记录在应用程序日志中:

注意

在发送端口“send port>”<上发送到适配器“WCF-SQL”且 URI 为“mssql:// URI<”>的消息已挂起。
错误详细信息:System.Data.SqlClient.SqlException (0x80131904) :无法将值 NULL 插入到列“<列名称>”、表“表>”<中;列不允许空值。 插入失败。
该声明已终止。

如果表的列可以存储 NULL 值,则会错误地将 NULL 值插入到表的列中。

便笺

  • 如果发送端口调用表操作而不是存储过程来在表的列中插入行,则不会发生此问题。
  • 空元素的正确值是空字符串。

      

解决方法

累积更新信息

BizTalk Adapter Pack 2009

解决此问题的修补程序包含在 BizTalk Adapter Pack 2.0 的累积更新程序包 4 中。 有关如何获取累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2604327 适用于 BizTalk Adapter Pack 2.0 的累积更新包 4

BizTalk Adapter Pack 2010

解决此问题的修补程序包含在 BizTalk Adapter Pack 2010 的累积更新包 2 中。

有关如何获取累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2572999 适用于 BizTalk Adapter Pack 2010 的累积更新程序包 2

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

有关 BizTalk Server 的 Service Pack 和累积更新列表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2555976 BizTalk Server 的 Service Pack 和累积更新列表 有关BizTalk Server修补程序的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2003907 有关BizTalk Server修补程序的信息