MS DTC Distributed transactions: Oracle 10gR2, SQL Server 2005 and Windows Server 2008 R2

We’ve been developing an HR web system(ASP.Net/Oracle) which needs to be integrated with a legacy Payroll client/server system(SQL Server).

Our testing environment is like this:

Application server: IIS 7.0 running on Windows Server 2008 R2, MS DTC enabled, Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64) installed.

Database server: SQL Server 2005 Developer Edition and Oracle 10gR2 on Windows XP SP3, MS DTC enabled.

MS DTC setup:

MSDTC started with the following settings:

Security Configuration (OFF = 0 and ON = 1):
Allow Remote Administrator = 0,
Network Clients = 1,
Trasaction Manager Communication:
Allow Inbound Transactions = 1,
Allow Outbound Transactions = 1,
Transaction Internet Protocol (TIP) = 0,
Enable XA Transactions = 1,
Enable SNA LU 6.2 Transactions = 0,
MSDTC Communications Security = No Authentication Required,
Account = NT AUTHORITY\NetworkService,
Firewall Exclusion Detected = 0

Transaction Bridge Installed = 1
Filtering Duplicate Events = 1

PROBLEM

So I tried running a transaction but it didn’t work.

I was getting this error:

Error de servidor en la aplicación ‘/RRHH’.
——————————————————————————–

Se anuló la transacción.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.Transactions.TransactionAbortedException: Se anuló la transacción.

Error de código fuente:

Línea 66:             End Using
Línea 67:             scope.Complete()
Línea 68:         End Using
Línea 69:
Línea 70:         ‘Si no hubo error durante la migración procedemos ha actualizar los estados de las

Archivo de origen: C:\Inetpub\wwwroot\SISTEMARRHH\BLSistemaRRHH\BLMigrarSQL.vb    Línea: 68

Seguimiento de la pila:

[TransactionAbortedException: Se anuló la transacción.]
System.Transactions.TransactionStateAborted.BeginCommit(InternalTransaction tx, Boolean asyncCommit, AsyncCallback asyncCallback, Object asyncState) +11
System.Transactions.CommittableTransaction.Commit() +173
System.Transactions.TransactionScope.InternalDispose() +328
System.Transactions.TransactionScope.Dispose() +1607
BLSistemaRRHH.BLMigrarSQL.MigrarNuevo_Insert(String _codigoEmpleado, Int32 _idPersonal) in C:\Inetpub\wwwroot\SISTEMARRHH\BLSistemaRRHH\BLMigrarSQL.vb:68
Personal_EnvioNuevosModificadosPlanillas.procesarNuevosIngresos() in C:\Inetpub\wwwroot\SISTEMARRHH\AppSistemaRRHH\personal\EnvioNuevosModificadosPlanillas.aspx.vb:167
Personal_EnvioNuevosModificadosPlanillas.btnEnviarPlanillas_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\SISTEMARRHH\AppSistemaRRHH\personal\EnvioNuevosModificadosPlanillas.aspx.vb:112
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

——————————————————————————–
Información de versión: Versión de Microsoft .NET Framework:2.0.50727.3615; Versión ASP.NET:2.0.50727.3618

Solution:

Install Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64), select customized installation, and make sure you select Oracle Services For Microsoft Transaction Server. Install and reboot your server.

Try running transactions again and now it should work. If it doesn’t, make sure Oracle Services For Microsoft Transaction Server is running. Go to Computer, Manage, Services, find the service and start it.

Check this post (chinese forum): http://codegear.cn/post/2010/12/09/Oracle_Unable_to_load_DLL_oramts_dll.aspx

It shows a screen about installing Oracle Services For Microsoft Transaction Server

Additional information:

Enable Network Access Securely for MS DTC
Multiple SQL Transactional Commands Across Different Database Connections
Whidbey ADO.NET System.Transactions Distributed Transactions
Distributed Transactions Concepts
How to troubleshoot MSDTC transaction failure issue with linked Oracle Server on Win2003
TransactionScope – Unable to load DLL ‘oramts.dll’

One response to this post.

  1. That is really interesting, You are an overly
    professional blogger. I’ve joined your feed and stay up for looking
    for more of your magnificent post. Also, I have shared your website in my social
    networks

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: