修复:使用 BizTalk Adapter for Oracle Database 连接到 Oracle 数据库时,包变量触发器操作失败

应用对象
Microsoft BizTalk Adapter Pack 2013 BizTalk Adapters

本文适用于以下产品:

  • Microsoft BizTalk Adapter Pack 2010
  • Microsoft BizTalk Adapter Pack 2013

症状

假设您在 Microsoft BizTalk Adapter for Oracle 数据库上有一个基于 WCF 的 Oracle 发送端口。 此外,假设 Oracle 服务器上正在使用某些 Oracle 程序包变量和触发器操作。 在这种情况下,触发器操作可能会失败,您会收到类似于以下内容的错误消息:

注意

在发送端口“<SendPortName>”上发送到适配器“<AdapterName>”的消息,其中 URI<“URI> 已挂起。

错误详细信息: Microsoft.ServiceModel.Channels.Common.TargetSystemException: ORA-01400: cannot insert NULL into (“”.“”.“”)
ORA-06512:在 Oracle.DataAccess.Client.OracleException ---> 第 2 行: ORA-01400: 无法将 NULL 插入 (“”.“”.“”)
ORA-06512:在第 2 行
在 Oracle.DataAccess.Client.OracleException.HandleErrorHelper (Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
在 Oracle.DataAccess.Client.OracleException.HandleError (Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
在 Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery ()
在 Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery (OracleCommand 命令、OracleCommonExecutionHelper executionHelper)
- 内部异常堆栈跟踪结束 -

原因

出现此问题的原因是,当适配器获取连接时,会话状态会重新初始化。

解决方法

要解决此问题,请安装此修补程序并在发送端口属性中禁用连接池。

累积更新包信息

对于 BizTalk Adapter Pack 2013

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

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

2892600 适用于 BizTalk Adapter Pack 2013 的累积更新程序包 1

对于 BizTalk Adapter Pack 2010

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

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

2617150 适用于 BizTalk Adapter Pack 2010 的累积更新包 3

状态

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

参考资料

有关 BizTalk Server 修补程序的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2003907 有关BizTalk Server修补程序的信息有关连接池配置的更多信息,请转到以下 MSDN 网站:

如何配置 Oracle 数据库适配器绑定属性
      

详细信息

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。