Solucionar problemas con MSDTC

La mayoría de las operaciones en tiempo de ejecución de BizTalk Server necesitan ser compatibles con Microsoft Distributed Transaction Coordinator (MSDTC) para asegurar que las operaciones coincidan con respecto a las transacciones. Si la compatibilidad de la transacción MSDTC no está disponible, las operaciones en tiempo de ejecución de BizTalk Server asociadas no pueden continuar. Los componentes de BizTalk que están comúnmente afectados cuando no está configurada correctamente la compatibilidad de la transacción MSDTC incluyen (aunque no son los únicos) el servicio de inicio de sesión único, las instancias de host de BizTalk y cualquier instancia de SQL Server que esté conectada por BizTalk Server. Esta sección contiene información que describe errores relativos a MSDTC y los pasos que se pueden realizar para diagnosticar y resolver problemas con MSDTC.

Errores que se pueden producir si no está configurada correctamente la compatibilidad de la transacción MSDTC

Se pueden producir errores similares a los siguientes en BizTalk Server si no está configurada correctamente la compatibilidad de la transacción MSDTC en los equipos en un entorno de BizTalk:

  • "Un problema en el Coordinador de transacciones distribuidas de Microsoft impidió que se efectuara la conexión con la base de datos de configuración. El administrador de transacción ha deshabilitado su soporte para transacciones de red o remotas.

  • "Un problema en el Coordinador de transacciones distribuidas de Microsoft impidió que se efectuara la conexión con la base de datos de configuración. La transacción ya se ha llevado a cabo o se ha cancelado implícita o explícitamente".

  • "Código de error: 0x8004d00a, No se puede dar de alta la nueva transacción en el coordinador de transacciones especificado".

  • "No se pudieron recuperar los datos de tipo de transporte para la ubicación de recepción 'MySample ReceiveLocation' del almacén de configuración. Error en el servidor de inicio de sesión principal 'MyServer'. "El servidor de RPC no está disponible".

  • "Código de error: 0x8004d025, El administrador de transacción asociado deshabilitó la compatibilidad con las transacciones de red o remotas".

  • "Código de error: 0xc0002a24, No se pudo importar una transacción DTC. Compruebe que MSDTC está correctamente configurado para funcionamiento remoto".

  • "0x8004d01c

    [0x1705] Error al crear el elemento de trabajo interno.

    Asegúrese de que el servidor SQL Server se esté ejecutando.”

    Para resolver los errores de configuración de MSDTC, siga los pasos que se indican a continuación.

Asegurarse de que la resolución de nombre NetBIOS entre el servidor BizTalk Server y los servidores remotos es correcta

Las transacciones MSDTC correctas entre equipos necesitan que el equipo cliente pueda resolver el nombre NetBIOS del equipo servidor en la dirección IP correcta y el equipo servidor pueda resolver el nombre NetBIOS del equipo cliente en la dirección IP correcta. Para comprobar que la resolución de nombre NetBIOS funciona en ambas direcciones (cliente a servidor y servidor a cliente), siga estos pasos:

Nota

El nombre netBIOS también se conoce normalmente como nombre de red .

  1. Determine el nombre NetBIOS de cada equipo:

    1. Haga clic en Mi PC para abrir el cuadro de diálogo Propiedades del sistema. Haga clic en la pestaña Nombre del equipo para ver el Nombre completo de equipo asignado al equipo.

    2. El nombre NetBIOS es la primera parte del nombre designado como nombre de equipo completo , por lo que, por ejemplo, si el nombre completo del equipo aparece como myserver.company.domain.com, el nombre NetBIOS del equipo es myserver.

  2. Determine la dirección IP o direcciones que se han asociado a cada equipo:

    1. Inicie un símbolo del sistema en el equipo cliente, escriba el siguiente comando y, a continuación, presione ENTRAR:

      ipconfig /all
      
    2. La dirección IP o direcciones asociadas al equipo cliente aparecen en la ventana del símbolo del sistema.

    3. Inicie un símbolo del sistema en el equipo servidor, escriba el siguiente comando y, a continuación, presione ENTRAR:

      ipconfig /all
      
    4. La dirección IP o direcciones asociadas al equipo servidor aparecen en la ventana del símbolo del sistema.

  3. Compruebe que el nombre NetBIOS de cada equipo se resuelve en una de las direcciones IP asociadas al equipo:

    1. Inicie un símbolo del sistema en el equipo cliente, escriba el siguiente comando y, a continuación, presione ENTRAR:

      ping <NetBIOS name of server computer>
      

      Los resultados del comando ping deben devolver una dirección IP asociada al equipo servidor.

    2. Inicie un símbolo del sistema en el equipo servidor, escriba el siguiente comando y, a continuación, presione ENTRAR:

      ping <NetBIOS name of client computer>
      

      Los resultados del comando ping deben devolver una dirección IP asociada al equipo cliente.

  4. Compruebe que la búsqueda inversa de nombre de la dirección IP asociada con el nombre NetBIOS de cada equipo se resuelve en el nombre de equipo correcto:

    1. Inicie un símbolo del sistema en el equipo cliente, escriba el siguiente comando y, a continuación, presione ENTRAR:

      ping -a <IP Address associated with client computer NetBIOS name>
      

      Los resultados del comando ping deberían devolver un nombre NetBIOS o nombre de dominio completo que corresponda al nombre NetBIOS que se usó en el paso 3a. Si el nombre devuelto no coincide o corresponde con el nombre NetBIOS usado en el paso 3a, la búsqueda inversa de dirección IP producirá un error que puede hacer que las transacciones MSDTC produzcan un error.

    2. Inicie un símbolo del sistema en el equipo servidor, escriba el siguiente comando y, a continuación, presione ENTRAR:

      ping -a <IP Address associated with server computer NetBIOS name>
      

      Los resultados del comando ping deberían devolver un nombre NetBIOS o nombre de dominio completo que corresponda al nombre NetBIOS que se usó en el paso 3b. Si el nombre devuelto no coincide o corresponde con el nombre NetBIOS usado en el paso 3b, la búsqueda inversa de dirección IP producirá un error que puede hacer que las transacciones MSDTC produzcan un error.

    Si la resolución de nombre NetBIOS no es correcta en ninguna dirección o la búsqueda inversa de nombre genera un error, cree las entradas adecuadas en el servidor DNS, el servidor de nombre NetBIOS, el archivo HOSTS o LMHOSTS para solucionar el problema.

Nota

El método de resolución de nombre utilizado por el equipo cambia según el tipo de nodo NetBIOS del equipo. Para obtener más información sobre los tipos de nodo NetBIOS, consulte Resolución de nombres NetBIOS.

Asegurarse de que un servidor de seguridad entre el servidor BizTalk Server y los servidores remotos no esté bloqueando puertos necesarios para la asignación de puerto dinámico RPC

La funcionalidad MSDTC a través de la red depende de la funcionalidad RPC a través de la red. La funcionalidad RPC a través de un servidor de seguridad necesita que determinados puertos estén abiertos para contener la asignación de puerto dinámico RPC. Si hay un firewall en vigor entre el BizTalk Server y los servidores remotos, siga los pasos descritos en Configuración de la asignación dinámica de puertos RPC para que funcione con firewalls para dar cabida a la asignación dinámica de puertos RPC.

Definir las opciones de configuración de seguridad de MSDTC

Windows proporciona mejoras de seguridad que controlan cómo MSDTC accede a través de una red. Al modificar los valores de seguridad de MSDTC, podrá controlar cómo MSDTC se comunica con equipos remotos a través de la red. En esta tabla se enumeran los valores recomendados para las opciones que están disponibles al configurar los valores de seguridad de MSDTC:

Opción de configuración Valor predeterminado Valor recomendado
Acceso a DTC desde la red Disabled habilitado
Cliente y administración
Permitir clientes remotos Disabled Disabled
Permitir administración remota Disabled Disabled
Comunicación del administrador de transacciones
Permitir entrantes Disabled habilitado
Permitir salientes Disabled habilitado
Se requiere autenticación mutua habilitado Está habilitada si todas las máquinas remotas ejecutan Windows Server 2003 SP1 o Windows XP SP2 o versiones posteriores y tienen configurada la opción “Se requiere autenticación mutua”.
Se requiere autenticación de llamada entrante Disabled Habilitada si se ejecuta MSDTC en el clúster.
No se requiere autenticación Disabled Habilitada si los equipos remotos disponen de una versión anterior a Windows Server 2003 SP1 o anterior a Windows XP SP2.
Habilitar TIP Disabled Habilitada si se ejecuta el Portal de BAM.
Habilitar transacciones XA Disabled Habilitada si se comunica con un sistema transaccional basado en XA, por ejemplo, al comunicarse con IBM WebSphere MQ a través del adaptador de MQSeries.

Tras aplicar estos cambios, se reiniciará el servicio MSDTC.

Para obtener acceso a las opciones de configuración de seguridad de MSDTC, siga los pasos siguientes:

  1. Haga clic en Inicio, haga clic en Ejecutar y escriba dcomcnfg para iniciar la consola de administración de servicios de componentes.

  2. Haga clic para expandir Servicios de componentes y haga clic para expandir Equipos.

  3. Haga clic para expandir Mi PC, haga clic para expandir Coordinador de transacciones distribuidas, haga clic con el botón secundario en DTC local y haga clic en Propiedades.

  4. Haga clic en la pestaña Seguridad del cuadro de diálogo Propiedades de DTC local .

Nota

En función de los cambios que haya efectuado, es posible que deba reiniciar el equipo para aplicarlos. Si tras aplicar los cambios y reiniciar el servicio MSDTC todavía experimenta algún problema, reinicie el equipo en el que se han hecho los cambios para garantizar que se hayan aplicado.

Si se habilitan las opciones de configuración Autenticación mutua requerida o Autenticación del autor de llamada entrante Habilitada, se debe conceder a la cuenta de equipo cliente el derecho de usuario Acceso a este equipo desde la red . Si a la cuenta de equipo de un equipo cliente no se le concede el acceso a este equipo desde el derecho de usuario de red , o se incluye en el derecho denegar el acceso a este equipo desde el derecho de usuario de red, se producirá un error en la comunicación de DTC entre el equipo cliente y el equipo servidor.

La configuración predeterminada es conceder al grupo Todos el acceso a este equipo desde el derecho de usuario de red . Por lo tanto, no será necesario cambiar este derecho de usuario a menos que se haya modificado la configuración predeterminada. Si la opción De configuración Sin autenticación requerida está habilitada, el derecho de usuario Acceso a este equipo desde la red no se aplica a la cuenta del equipo cliente.

Para cambiar los usuarios o grupos a los que se concede el permiso de usuario "Tener acceso a este equipo desde la red", realice los siguientes pasos.

  1. Haga clic en Inicio, en Ejecutar, escriba Gpedit.msc y, a continuación, haga clic en Aceptar.

  2. Expanda los siguientes elementos en la lista Directiva de equipo local:

    • Configuración del equipo

    • Configuración de Windows

    • Configuración de seguridad

    • Directivas locales

  3. Haga clic en Asignación de derechos de usuario.

  4. Haga doble clic en Acceder a este equipo desde la red y, a continuación, haga clic en Agregar usuario o grupo.

  5. Haga clic en Tipos de objeto, seleccione Equipos y haga clic en Aceptar.

  6. Agregue el nombre del equipo o el nombre del grupo en el área Escriba los nombres de objeto que se van a seleccionar .

  7. Haga clic en Comprobar nombres para comprobar la entrada.

  8. Haga clic en Aceptar dos veces.

    Para cambiar los usuarios o grupos que se incluyen en el derecho denegar el acceso a este equipo desde el derecho de usuario de red , siga estos pasos:

  9. Expanda los siguientes elementos en la lista Directiva de equipo local:

    • Configuración del equipo

    • Configuración de Windows

    • Configuración de seguridad

    • Directivas locales

  10. Haga clic en Asignación de derechos de usuario.

  11. Haga doble clic en Denegar acceso a este equipo desde la red y, a continuación, haga clic para seleccionar el nombre de equipo o el grupo que desea quitar de este derecho de usuario.

  12. Haga clic en Quitar y, a continuación, haga clic en Aceptar.

Definir los valores adecuados para las opciones EnableAuthEpResolution y RestrictRemoteClients

Windows requiere llamadas autenticadas a la interfaz de RPC para mejorar la seguridad. Esta funcionalidad se puede configurar mediante las claves del Registro EnableAuthEpResolution y RestrictRemoteClients . Siga estos pasos para garantizar que los equipos remotos puedan obtener acceso a la interfaz de RPC:

Advertencia

El uso incorrecto del Editor del Registro podría ocasionar problemas que hicieran necesaria una reinstalación del sistema operativo. Use el Editor del Registro bajo su propia responsabilidad. Para obtener más información sobre cómo realizar copias de seguridad, restaurar y modificar el registro, vea el artículo de Microsoft Knowledge Base "Descripción del Registro de Microsoft Windows" en Descripción del Registro de Microsoft Windows.

  1. Haga clic en Inicio, haga clic en Ejecutar, escriba regedit.exey, a continuación, haga clic en Aceptar para iniciar el Editor del Registro.

    Vaya a HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT

  2. En la clave RPC , cree las siguientes entradas DWORD con los valores indicados. Si la clave RPC no existe, debe crearse.

    Entrada DWORD Valor predeterminado Valor recomendado
    EnableAuthEpResolution 0 (deshabilitado) 1
    RestrictRemoteClients 1 (habilitado) 0
  3. Cierre el Editor del Registro.

  4. Reinicie el servicio MSDTC.

Nota

En función de los cambios que haya efectuado, es posible que deba reiniciar el equipo para aplicarlos. Si tras aplicar los cambios y reiniciar el servicio MSDTC todavía experimenta algún problema, reinicie el equipo en el que se han hecho los cambios para garantizar que se hayan aplicado.

Si se está ejecutando Firewall de Windows, agregue una excepción para el servicio MSDTC

El servicio Firewall de Windows puede bloquear las comunicaciones MSDTC entre equipos. Para garantizar que no se bloqueen las comunicaciones MSDTC entre equipos, agregue msdtc.exe a la lista de excepciones de Firewall de Windows, si se está ejecutando el servicio Firewall de Windows.

  1. Haga clic en Inicio, en Ejecutar, escriba firewall.cply, a continuación, haga clic en Aceptar para mostrar el cuadro de diálogo Firewall de Windows .

  2. Haga clic en Permitir un programa a través del Firewall de Windows para mostrar el cuadro de diálogo Configuración del Firewall de Windows .

  3. Haga clic en la pestaña Excepciones del cuadro de diálogo Configuración del Firewall de Windows .

  4. Haga clic en Agregar programa para mostrar el cuadro de diálogo Agregar un programa .

  5. Haga clic en Examinar y vaya a %system32%\msdtc.exe.

    Nota

    Inicie un símbolo del sistema, escriba echo %system32% y presione Entrar para determinar la ubicación del directorio \System32 en este equipo.

  6. Haga clic para seleccionar msdtc.exe y haga clic en Abrir.

  7. Haga clic en Cambiar ámbito para especificar el conjunto de equipos para los que se deben permitir las comunicaciones de MSDTC y haga clic en Aceptar.

  8. Haga clic en Aceptar en el cuadro de diálogo Agregar un programa y haga clic en Aceptar en el cuadro de diálogo Configuración del Firewall de Windows .

  9. Cierre el cuadro de diálogo Firewall de Windows .

  10. Detenga y reinicie el servicio del Coordinador de transacciones distribuidas.

    • Inicie un símbolo del sistema, escriba net stop msdtc y presione Entrar.

    • Una vez detenido el servicio Coordinador de transacciones distribuidas, escriba net start msdtc y presione Entrar.

Utilizar DTCTester o DTCPing para comprobar la funcionalidad MSDTC a través de la red

Use el cmdlet Test-Dtc para comprobar la compatibilidad de transacciones entre dos equipos si SQL Server está instalado en uno de los equipos. Para obtener más información, vaya a Windows PowerShell: Test-Dtc.

Utilice DTCPing para comprobar la compatibilidad con transacciones entre dos equipos, si SQL Server no se ha instalado en ninguno de ellos. La herramienta DTCPing debe ejecutarse tanto en el equipo cliente como en el equipo servidor y se trata de una buena alternativa en la utilidad DTCTester cuando SQL Server no se ha instalado en ningún equipo. Para obtener más información sobre DTCPing, consulte Solución de problemas de firewall de MS DTC y Configuración del Coordinador de transacciones distribuidas de Microsoft (DTC) para trabajar a través de un firewall.

Importante

Si DTCPing devuelve la advertencia de que "WARNING:the CID values for both test machines are the same" (ADVERTENCIA: los valores CID de ambas máquinas de prueba son los mismos), siga los pasos descritos en la sección Asegúrese de que MSDTC tiene asignado un valor CID único para dar cabida a la funcionalidad correcta de MSDTC entre las máquinas de prueba.

Asegurarse de que se asigne un valor de CID único a MSDTC

La característica MSDTC del sistema operativo Windows requiere valores de CID únicos para garantizar que la funcionalidad MSDTC funcione correctamente entre equipos. Las imágenes duplicadas de las instalaciones de Windows en el disco deben tener valores de CID únicos; de lo contrario, es posible que MSDTC no funcione correctamente. Esto puede suceder si se utilizan discos duros virtuales para implementar un sistema operativo en un equipo virtual.

Para determinar si son únicos los valores de CID de MSDTC de los equipos que ejecutan el sistema operativo Windows, compruebe los valores de las entradas en la clave del Registro HKEY_CLASSES_ROOT\CID en ambos equipos. Si estos valores no son únicos para cada equipo, siga los pasos descritos en la sección Considere la posibilidad de reinstalar el servicio Coordinador de transacciones distribuidas si otros pasos de solución de problemas no son correctos para reinstalar MSDTC en uno de los equipos, lo que generará valores CID de MSDTC únicos para ese equipo y acomodará las operaciones MSDTC adecuadas.

Se produce el error “No se puede dar de alta una nueva transacción en el coordinador de transacciones especificado (0x8004d00a)” si la conexión de MSDTC entre un equipo cliente y un equipo servidor está cerrada

En determinados escenarios, es posible que se cierre una conexión MSDTC existente entre un cliente y un servidor y los intentos posteriores de usar esta conexión producirán el siguiente mensaje de error: La nueva transacción no puede inscribirse en el coordinador de transacciones especificado (0x8004d00a) Para obtener más información, vaya a Nueva transacción no puede inscribirse en el coordinador de transacciones especificado al intentar iniciar una transacción en MS DTC.

Considerar la posibilidad de volver a instalar el servicio del Coordinador de transacciones distribuidas si otros pasos para la solución de problemas no logran resolverlo

Si otros intentos de solucionar problemas con MSDTC no son satisfactorios considere la posibilidad de desinstalar y volver a instalar MSDTC. Siga estos pasos para desinstalar y volver a instalar MSDTC:

  1. Abra un símbolo del sistema como administrador.

  2. En el símbolo del sistema, escriba lo siguiente para desinstalar el servicio Coordinador de transacciones distribuidas: msdtc -uninstall

  3. En el símbolo del sistema, escriba lo siguiente para instalar el servicio Coordinador de transacciones distribuidas: msdtc –install

Importante

Volver a instalar MSDTC puede cambiar el comportamiento predeterminado del servicio del coordinador de transacciones distribuidas. Siga estos pasos después de volver a instalar MSDTC para garantizar que el servicio del Coordinador de transacciones distribuidas funciona correctamente:

  • Volver a instalar MSDTC puede restablecer las opciones de configuración de seguridad de MSDTC a los valores predeterminados. Compruebe que las opciones de configuración de seguridad de MSDTC estén establecidas en los valores apropiados después de volver a instalar MSDTC.
    • La reinstalación de MSDTC puede cambiar el valor tipo de inicio del servicio Coordinador de transacciones distribuidas. Compruebe que el valor tipo de inicio del servicio Coordinador de transacciones distribuidas esté establecido en Automático después de volver a instalar MSDTC.
    • Volver a instalar MSDTC puede requerir un reinicio del equipo. Para garantizar que el servicio del Coordinador de transacciones distribuidas funciona correctamente, reinicie el equipo después de volver a instalar MSDTC.

Consulte también

Herramientas y utilidades que se usarán para solucionar problemas de solución de problemas de un clúster de Windows Server