我有一个将很多行插入Oracle数据库的应用程序。发送端口返回“ORA-01013:用户请求取消当前操作”
发送端口为“WCF-Custom”,使用OracleDbBinding连接数据库。
答案 0 :(得分:1)
我过去也有同样的问题。我的问题是使用“WCF-Custom”端口和OracleDBBinding来调用Oracle PL。 PL的响应非常缓慢,最后我收到错误“ORA-01013:用户请求取消当前操作”。
我的问题已解决,改变PL。我认为错误是由发送端口的“ReceiveTimeout”属性产生的。此属性表示“指定WCF消息接收超时。实际上,这意味着适配器等待入站消息的最长时间。”,我怀疑当ReceiveTimeout完成时,WCF-Custom取消操作然后Oracle发送错误。
答案 1 :(得分:0)
发生了什么:
当插入大量记录时,WCF会发出几个并行请求来插入数据。默认的“UseAmbientTransaction”设置包装单个事务中的所有插入。如果其中一个插入的行破坏了数据库约束,它会尝试回滚所有插入的事务。这些事务都返回oracle 1013异常,并且失败的真正原因就会丢失。
<强>解决方案强>:
在发送端口“传输高级选项”选项卡上,设置“有序传递”复选框。这可以防止并行插入操作和错误的真正原因。