无法使用OracleDBBinding进行分发d事务处理 [英] Unable to enlist in a distribute​d transactio​n with OracleDBBinding

查看:168
本文介绍了无法使用OracleDBBinding进行分发d事务处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用带有OracleDBbinding的WCF自定义适配器对OracleDatabase执行一些插入/更新操作并获得以下错误。我已经在此发送端口上将useambienttransaction属性设置为true。

I'm doing some Insert/Update operations with the OracleDatabase using WCF Custom adapter with OracleDBbinding and getting the below error. I've already set the useambienttransaction property to true on this send port.

任何帮助?

错误:

消息ID:{445A3664-06BE-4884-A394 - 2DD717B72CF2}

Message ID: {445A3664-06BE-4884-A394-2DD717B72CF2}

实例ID:{E9D590C9-E075-45FD-8299- 2CE8DAFCC2C3}

Instance ID: {E9D590C9-E075-45FD-8299-2CE8DAFCC2C3}

错误描述:Microsoft.ServiceModel。 Channels.Common。 ConnectionException:无法登记我n分布式交易---> Oracle.DataAccess.Client。 OracleException:
无法在分布式事务中登记

Error Description: Microsoft.ServiceModel.Channels.Common.ConnectionException: Unable to enlist in a distributed transaction ---> Oracle.DataAccess.Client.OracleException: Unable to enlist in a distributed transaction

在Oracle.DataAccess.Client。< wbr> OracleException。 HandleErrorHelper(Int32 errCode,OracleConnection conn,IntPtr opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,Object src,String procedure,
Boolean bCheck)

at 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,IntPtr opsErrCtx,Object src)

at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)

在Oracle .DataAccess.Client。 OracleConnection.Open()

at Oracle.DataAccess.Client.OracleConnection.Open()

在Microsoft.Adapters.OracleDB。 OracleDBConnection。 OpenConnection( OracleCommonExecutionHelper executionHelper)

at Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection(OracleCommonExecutionHelper executionHelper)

---内部异常堆栈跟踪结束---

--- End of inner exception stack trace ---

 

 

服务器堆栈跟踪:

Server stack trace:

在System.Runtime.AsyncResult。结束[TAsyncResult](IAsyncResult结果)

at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)

在System.ServiceModel.Channels。 ServiceChannel。 SendAsyncResult.End( SendAsyncResult result) < span style ="text-decoration:underline">

at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)

在System.ServiceModel.Channels。 ServiceChannel.EndCall(String action,Object [] outs,IAsyncResult result) < span style ="text-decoration:underline">

at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)

在System.ServiceModel.Channels。 ServiceChannel.EndRequest( IAsyncResult结果)

at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)

 

 

在[0]处重新抛出异常:

Exception rethrown at [0]:

在System.Runtime.Remoting。 Proxies.RealProxy。 HandleReturnMessage(IMessage reqMsg,IMessage retMsg) < span style ="text-decoration:underline">

at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

在System.Runtime.Remoting。 Proxies.RealProxy。 PrivateInvoke(MessageData msgData,Int32 type) < span style ="text-decoration:underline">

at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData msgData, Int32 type)

在System.ServiceModel.Channels。 IRequestChannel.EndRequest( IAsyncResult结果)

at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)

在Microsoft.BizTalk.Adapter.Wcf。 Runtime.WcfClient`2。 RequestCallback(IAsyncResult result)

at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)

 

推荐答案

如果Oracle DB在Windows平台上运行,则使用DTC Ping / DTC Tester检查两个系统之间的MSDTC连接。我似乎记得,只有当你使用
Microsoft Oracle ODBC驱动程序而不使用 Oracle数据库驱动程序时才能使用针对Oracle的DTC支持。因此,通过OracleDBBinding可能无法实现。

If the Oracle DB is running on a Windows Platform then use DTC Ping/DTC Tester to check MSDTC connectivity between the two systems. Also I seem to recall that DTC support against Oracle is available only if you were to use the Microsoft Oracle ODBC Drivers and not if you use the Oracle DB Drivers. So it might not be possible through a OracleDBBinding.

问候。


这篇关于无法使用OracleDBBinding进行分发d事务处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆