transacción transacciones soporte remotas para habilitar enable dtc deshabilitó asociado administrador sql-server msdtc

sql-server - transacciones - habilitar msdtc windows server 2012



¿Cómo habilito MSDTC en SQL Server? (6)

¿Incluso necesitas MSDTC? La escalada que está experimentando a menudo se debe a la creación de múltiples conexiones dentro de un solo TransactionScope.

Si lo necesita, debe habilitarlo como se indica en el mensaje de error. En XP:

  • Vaya a Herramientas administrativas -> Servicios de componentes
  • Expanda Servicios de componentes -> Equipos ->
  • Haga clic con el botón derecho en -> Propiedades -> pestaña MSDTC
  • Presione el botón Configuración de seguridad

¿Es esto una pregunta válida? Tengo una aplicación de Windows .NET que está usando MSTDC y lanza una excepción:

System.Transactions.TransactionManagerCommunicationException: el acceso a la red para Distributed Transaction Manager (MSDTC) se ha deshabilitado. Habilite DTC para acceso a la red en la configuración de seguridad para MSDTC utilizando la herramienta administrativa Servicios de componentes ---> System.Runtime.InteropServices.COMException (0x8004D024): el administrador de transacciones ha deshabilitado su soporte para transacciones remotas / de red. (Excepción de HRESULT: 0x8004D024) en System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction (UInt32 propgationTokenSize, Byte [] propgationToken, IntPtr managedIdentifier, Guid & transactionIdentifier, OletxTransactionIsolationLevel & isolationLevel, ITransactionShim & transactionShim) ....

Seguí la guía de Kbalertz para habilitar MSDTC en la PC en la que está instalada la aplicación, pero el error aún ocurre.

Me preguntaba si esto era un problema de base de datos. Si es así, ¿cómo puedo resolverlo?


@Dan,

¿No es necesario que msdtc esté habilitado para que funcionen las transacciones?

Solo transacciones distribuidas: aquellas que implican más de una conexión. Asegúrese doblemente de que solo está abriendo una única conexión dentro de la transacción y no escalará. El rendimiento también será mucho mejor.


Descubrí que la mejor manera de depurar es usar la herramienta de Microsoft llamada DTCPing

  1. Copie el archivo tanto en el servidor (DB) como en el cliente (servidor de aplicaciones / PC cliente)
    • Comience en el servidor y el cliente
    • En el servidor: complete el nombre de la computadora del cliente Netbios e intente configurar una conexión DTC
    • Reinicia ambas aplicaciones.
    • En el cliente: complete el nombre de la computadora Netbios y trate de configurar una conexión DTC

He tenido problemas con mi tarifa en nuestra antigua red de empresa, y tengo algunos consejos:

  • si aparece el mensaje de error "Gethostbyname failed" significa que la computadora no puede encontrar la otra computadora por su nombre de netbios . El servidor podría, por ejemplo, resolver y hacer ping al cliente, pero eso funciona en un nivel de DNS. No en un nivel de búsqueda de netbios. Usar servidores WINS o cambiar el LMHOST (sucio) resolverá este problema.
  • si aparece el mensaje "Acceso denegado", la configuración de seguridad no coincide. Debe comparar la pestaña de seguridad para el msdtc y conseguir que el servidor y el cliente coincidan. Otra cosa a mirar es el valor de RestrictRemoteClients . Dependiendo de su versión del sistema operativo y, lo que es más importante, del Service Pack, este valor puede ser diferente.
  • Otros problemas de conexión:
    • El cortafuegos entre el servidor y el cliente debe permitir la comunicación a través del puerto 135. Y lo más importante, la conexión puede iniciarse desde ambos sitios (tuve muchos problemas con la gente del cortafuegos de mi empresa porque suponían que solo el servidor abriría una conexión). en ese puerto)
    • El protocolo devuelve un puerto aleatorio para conectarse para la comunicación de transacción real. A los servidores de seguridad no les gusta eso, les gusta restringir los puertos a un cierto rango. Puede restringir la generación del puerto dinámico RPC a un cierto rango utilizando las claves como se describe en Cómo configurar la asignación del puerto dinámico RPC para trabajar con firewalls .

En mi experiencia, si el DTCPing puede configurar una conexión DTC iniciada desde el cliente e iniciada desde el servidor, sus transacciones ya no son el problema.


MSDTC debe estar habilitado en ambos sistemas, tanto servidor como cliente.
Además, asegúrese de que no haya un firewall entre los sistemas que bloquea RPC.
DTCTest es una buena aplicación que te ayuda a solucionar cualquier otro problema.


También puede ver here cómo activar MSDTC desde services.msc del Panel de control.

En el servidor donde reside el activador, debe activar el servicio MSDTC. Puede hacerlo haciendo clic en INICIO> AJUSTES> PANEL DE CONTROL> HERRAMIENTAS ADMINISTRATIVAS> SERVICIOS. Encuentre el servicio llamado ''Coordinador de transacciones distribuidas'' y haga clic con el botón derecho (en él y seleccione)> Iniciar.


Use esto para Windows Server 2008 r2 y Windows Server 2012 R2

  1. Haga clic en Inicio , haga clic en Ejecutar , escriba dcomcnfg y luego haga clic en Aceptar para abrir Servicios de componentes .

  2. En el árbol de la consola, haga clic para expandir los Servicios de componentes , haga clic para expandir Computadoras , haga clic para expandir Mi PC , haga clic para expandir Coordinador de transacciones distribuidas y luego haga clic en DTC local .

  3. Haga clic con el botón derecho en DTC local y haga clic en Propiedades para mostrar el cuadro de diálogo Propiedades de DTC local .

  4. Haga clic en la pestaña Seguridad .

  5. Marque la casilla de verificación "Acceso a DTC de red" .

  6. Finalmente marque las casillas de verificación "Permitir entrada" y "Permitir saliente" .

  7. Haga clic en Aplicar , OK .

  8. Aparecerá un mensaje sobre el reinicio del servicio.

  9. Haga clic en Aceptar y eso es todo.

Referencia: https://msdn.microsoft.com/en-us/library/dd327979.aspx

Nota: A veces, el firewall de la red en la computadora local o el servidor podría interrumpir su conexión, así que asegúrese de crear reglas para la conexión "Permitir entrada" y "Permitir saliente" para c:/windows/msdtc.exe