9 nov 2008

// // 8 comentarios

Se ha deshabilitado el acceso de red para el administrador de transacciones distribuidas (MSDTC)

Actualmente en una operación del proyecto que estamos realizando, utilizamos transacciones distribuidas, todo bien hasta que llego el momento de probar todo y fue ahí cuando ouchh!

Se ha deshabilitado el acceso de red para el administrador de transacciones distribuidas (MSDTC). Habilite DTC para el acceso de red en la configuración de seguridad de MSDTC utilizando la herramienta administrativa Servicios de componentes. ---> System.Runtime.InteropServices.COMException (0x8004D024): El administrador de transacción ha deshabilitado su soporte para transacciones de red o remotas. (Excepción de HRESULT: 0x8004D024)
   en System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid&

Pero bueno esto no es nada del otro mundo, lo que sucede es que para poder trabajar con transacciones distribuidas debemos habilitar el Coordinador de Transacciones que viene con Windows, en este post trataré de explicar como habilitarlo en Windows Vista, en XP difiere un poco.

En mi caso el entorno de ejecución de la aplicación es en Red, es decir el servidor de BD se encuentra en otro equipo.

Como habilitar el Coordinador de Transacciones en Windows Vista

En XP nos podemos ir a herramientas administrativas y entrar al servicio de componentes y habilitarlo, en este caso, lo estaba buscando en herramientas administrativas y no estaba por ningún lado, así que toca acceder vía Ejecutar:

En ejecutar escribimos "comexp.msc" y automáticamente se abrirá la consola de servicio de componentes de Windows Vista.

Una vez dentro de la consola desplegamos Servicios de componentes->Equipos->Mi PC->Coordinador de Transacciones distribuidas

Ahí tenemos a DTC (Distributed Transaction Coordinator), con clic derecho nos vamos a sus propiedades y ahí habilitamos las opciones que deseemos:

image

Luego nos vamos a la pestaña seguridad y habilitamos los propiedades correspondientes, de acuerdo al entorno en el que vamos a trabajar.

image

En mi caso he habilitado todo sin ninguna restricción para poder hacer las pruebas, pero en un entorno de producción dependerá mucho de las opciones que se tenga en cuanto al acceso a red y privilegios de usuarios.

Nos saldrá un mensaje que se ha reiniciado el servicio y ya esto todo listo. Vale comentar que es necesario que el servicio del coordinador de transacciones este iniciado, para ello pueden ir a la consola de servicios y verificarlo.

De cierta manera ya tenemos configurado el Coordinador de Transacciones, ahora solo falta darle acceso a través del firewall.

image

Con esto ya podemos trabajar tranquilamente con nuestras transacciones. Adicionalmente pueden revisar este articulo que trata sobre

Cómo habilitar el seguimiento de diagnóstico para MS DTC en un equipo en función de Windows Vista

Saludos!

8 comentarios:

Anónimo dijo...

HOLA disculpa mi ignoracia pero lo que acabas de hacer lo hiciste en el server o en el vista

Anónimo dijo...

oyes una pregunta que paso utilizaste para poder agregar la coordinador de transacciones distribuidas en las excepciones
?

diste el puerto 3372 o agregaste el servicio?

Ricardo La Rosa dijo...

Pues en Windows Vista y versiones superiores ya esta disponible para marcarlo, en caso de XP hay que agregar el ejecutable que se encuentra ubicado C:\Windows\System32\msdtc.exe

Espero te sirva, Saludos!

Sam dijo...

Muchas gracias, tenia rato intentando hacer que funcionara peo las explicaciones en internet estan algo confusas, me salvaste un trabajo de Visual Studio,
GRACIAS

Unknown dijo...

Hola amigo, recurro a ti en busca de ayuda :)

Me sirvio la informacion de esta entrada. Sin embargo cuando ejecuto mi aplicacion web y realizo una consulta dentro de la transaccion me sale esta excepcion:

Error del proveedor subyacente en Open.

Tienes alguna idea de porque sale?

Ricardo La Rosa dijo...

Miguel,

Normalmente el mensaje sale cuando el firewall de windows esta bloqueando las transacciones, prueba deshabilitandolo o agregando la excepcion como menciono en el comentario anterior, espero te sea de ayuda.

Saludos.

Unknown dijo...

Hola Amigo, estas configuraciones lo realice como indicas en mi servidor de base de datos.
tambien tengo un servidor de aplicaciones donde esta publicado mi aplicación.
sigo teniendo el mismo problema
Se ha deshabilitado el acceso de red para el administrador de transacciones distribuidas (MSDTC). Habilite DTC para el acceso de red en la configuración de seguridad de MSDTC utilizando la herramienta administrativa Servicios de componentes.

hice las pruebas de manera local y no tengo ningún problema por favor si me pueden dar algún alcance.
Saludos

Ricardo La Rosa dijo...

Hola Idmer,

Estas configuraciones deben aplicarse no solo el servidor de aplicaciones sino también en el cliente en caso de ser una aplicación Cliente/Servidor, espero pueda servir de referencia el comentario aunque un poco tarde.

Saludos.