我有一個將許多行插入到Oracle數據庫的應用程序。發送端口返回「ORA-01013:用戶請求取消當前操作」BizTalk發送端口返回ORA-01013:用戶請求取消當前操作
發送端口是使用OracleDbBinding連接數據庫的「WCF-Custom」。
我有一個將許多行插入到Oracle數據庫的應用程序。發送端口返回「ORA-01013:用戶請求取消當前操作」BizTalk發送端口返回ORA-01013:用戶請求取消當前操作
發送端口是使用OracleDbBinding連接數據庫的「WCF-Custom」。
發生了什麼事:
當插入大量記錄的WCF使幾個並行請求插入數據。默認的「UseAmbientTransaction」設置將所有插入包裝在單個事務中。如果其中一個插入的行破壞了數據庫約束,它將嘗試回滾所有插入的事務。這些事務都會返回oracle 1013異常,並導致失敗的真正原因。
解決方案:
在發送端口「交通運輸高級選項」選項卡中設置了「有序傳遞」複選框。這可以防止並行插入操作和錯誤的真正原因將被記錄。
我在過去有同樣的問題。我的問題是在OracleDBBinding中使用「WCF-Custom」端口來調用Oracle PL。該PL在響應中非常緩慢,最後我收到錯誤「ORA-01013:用戶請求取消當前操作」。
我的問題已經解決了改變PL。我認爲這個錯誤是由發送端口的「ReceiveTimeout」屬性產生的。此屬性表示「指定WCF消息接收超時,基本上,這意味着適配器等待入站消息的最長時間。」,我懷疑ReceiveTimeout完成後,WCF-Custom取消操作,然後Oracle發送錯誤。
你開始談論UseAmbientTransaction,但你說解決方案是Ordered Delivery。這看起來不正確。有序交付僅意味着它一次傳遞一條消息,而不是在一個事務中不會包裝批量插入。 – Dijkgraaf
你是正確的有序交付,防止同時發生多個消息。包含多個進程和環境事務的數據庫錯誤是爲什麼你看不到真正的問題。此錯誤阻止您查看根本原因 – Jay