Puede recibir un mensaje de error 7391 en SQL Server 2000 cuando ejecuta una transacción distribuida contra un servidor vinculado después de instalar Windows Server 2003 o el Service Pack 2 de Windows XP

Seleccione idioma Seleccione idioma
Id. de artículo: 839279 - Ver los productos a los que se aplica este artículo
Importante
Este artículo contiene información acerca de cómo modificar el Registro. Antes de modificar el Registro, asegúrese de hacer una copia de seguridad del mismo y de que sabe cómo restaurarlo si se produce algún problema. Para obtener más información acerca de cómo realizar una copia de seguridad, restaurar y modificar el Registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
256986 Definición del Registro de Microsoft Windows
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando ejecuta una transacción distribuida contra una instancia de SQL Server, puede recibir un mensaje de error similar al siguiente:

Servidor: Msj 7391, Nivel 16, Estado 1, Línea 1
No se puede realizar la operación. El proveedor OLE DB 'SQLOLEDB' no pudo iniciar una transacción distribuida. [Mensaje devuelto por el proveedor OLE/DB: No se puede dar de alta la nueva transacción en el coordinador de transacciones especificado. ] Traza de error de OLE DB [Proveedor OLE/DB 'SQLOLEDB' ITransactionJoin::JoinTransaction devolvió 0x8004d00a].


Este problema puede producirse cuando se cumple una de las condiciones siguientes:
  • Microsoft Windows Server 2003 o el Service Pack 2 (SP2) de Microsoft Windows XP está instalado en el equipo que inicia la transacción distribuida.
  • Microsoft Windows Server 2003 o el SP2 de Microsoft Windows XP está instalado en el equipo remoto que ejecuta Microsoft SQL Server 2000 y ese equipo está conectado al equipo que inicia la transacción distribuida.

Causa

Este problema se produce por uno o más de los motivos siguientes:
  • El Coordinador de transacciones distribuidas de Microsoft (MSDTC) está deshabilitado para las transacciones de red.
  • Firewall de Windows está habilitado en el equipo. De forma predeterminada, Firewall de Windows bloquea el programa Coordinador de transacciones distribuidas de Microsoft (MSDTC).

    Nota
    Este problema puede producirse incluso cuando Firewall de Windows está desactivado.

Solución

Advertencia
Pueden producirse problemas graves si modifica incorrectamente el Registro mediante el Editor del Registro o con cualquier otro método. Estos problemas pueden requerir que reinstale el sistema operativo. Microsoft no puede garantizar la solución de esos problemas. Modifique el Registro bajo su responsabilidad.

Para evitar este problema, siga estos pasos en el equipo donde está instalado Windows Server 2003 o el SP2 de Windows XP:
  1. Asegúrese de que la cuenta Iniciar sesión como para el servicio MSDTC es la cuenta Servicio de red. Para ello, siga estos pasos:
    1. Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
    2. En el cuadro de diálogo Ejecutar, escriba Services.msc y haga clic en Aceptar.
    3. En la ventana Servicios, busque el servicio Coordinador de transacciones distribuidas bajo Nombre en el panel derecho.
    4. En la columna Iniciar sesión como, vea si la cuenta Iniciar sesión como es Servicio de red o Sistema local.

      Si la cuenta Iniciar sesión como es Servicio de red, vaya al paso 2. Si la cuenta Iniciar sesión como es Sistema local, continúe con estos pasos.
    5. Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
    6. En el cuadro de diálogo Ejecutar, escriba cmd y haga clic en Aceptar.
    7. En el símbolo del sistema, escriba Net stop msdtc para detener el servicio MSDTC.
    8. En el símbolo del sistema, escriba Msdtc ?uninstall para quitar MSDTC.
    9. En el símbolo del sistema, escriba regedit para abrir el Editor del Registro.
    10. En el Editor del Registro, busque la siguiente clave:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
      .

      Elimine esta clave.
    11. Cierre el Editor del Registro.
    12. En el símbolo del sistema, escriba Msdtc ?install para instalar MSDTC.
    13. En el símbolo del sistema, escriba Net start msdtc para iniciar el servicio MSDTC.

      Observe que la cuenta Iniciar sesión como para el servicio MSDTC está establecida en Servicio de red.
  2. Habilite MSDTC para permitir la transacción de red. Para ello, siga estos pasos:
    1. Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
    2. En el cuadro de diálogo Ejecutar, escriba dcomcnfg.exe y haga clic en Aceptar.
    3. En la ventana Servicios de componentes, expanda sucesivamente Servicios de componentes, Equipos y Mi PC.
    4. Haga clic con el botón secundario del mouse (ratón) en Mi PC y, a continuación, haga clic en Propiedades.
    5. En el cuadro de diálogo Propiedades de Mi PC, haga clic en Configuración de seguridad en la ficha MSDTC.
    6. En el cuadro de diálogo Configuración de seguridad, haga clic para activar la casilla de verificación Acceso a DTC desde la red.
    7. Para permitir que la transacción distribuida se ejecute en este equipo desde un equipo remoto, haga clic para activar la casilla de verificación Permitir entrantes.
    8. Para permitir que la transacción distribuida se ejecute en un equipo remoto desde este equipo, haga clic para activar la casilla de verificación Permitir salientes.
    9. Bajo el grupo Comunicación del administrador de transacciones, haga clic para seleccionar la opción No se requiere autenticación.
    10. En el cuadro de diálogo Configuración de seguridad, haga clic en Aceptar.
    11. En el cuadro de diálogo Propiedades de Mi PC, haga clic en Aceptar.
  3. Configure Firewall de Windows para incluir el programa MSDTC e incluir el puerto 135 como una excepción. Para ello, siga estos pasos:
    1. Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
    2. En el cuadro de diálogo Ejecutar, escriba Firewall.cpl y haga clic en Aceptar.
    3. En el Panel de control, haga doble clic en Firewall de Windows.
    4. En el cuadro de diálogo Firewall de Windows, haga clic en Agregar programa en la ficha Excepciones.
    5. En el cuadro de diálogo Agregar un programa, haga clic en el botón Examinar y busque el archivo Msdtc.exe. De forma predeterminada, el archivo está almacenado en la carpeta <unidad de instalación>:\Windows\System32.
    6. En el cuadro de diálogo Agregar un programa, haga clic en Aceptar.
    7. En el cuadro de diálogo Firewall de Windows, haga clic para seleccionar la opción msdtc en la lista Programas y servicios.
    8. Haga clic en Agregar puerto en la ficha Excepciones.
    9. En el cuadro de diálogo Agregar un puerto, escriba 135 en el cuadro de texto Número de puerto y haga clic para seleccionar la opción TCP.
    10. En el cuadro de diálogo Agregar un puerto, escriba un nombre para la excepción en el cuadro de texto Nombre y, a continuación, haga clic en Aceptar.
    11. En el cuadro de diálogo Firewall de Windows, seleccione en la lista Programas y servicios el nombre que utilizó para la excepción en el paso j y, a continuación, haga clic en Aceptar.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Más información

Pasos para reproducir este comportamiento

  1. Inicie sesión en un equipo que tenga instalado Windows Server 2003 o el SP2 de Windows XP.
  2. Inicie el Analizador de consultas.
  3. Agregue un equipo remoto que esté ejecutando Microsoft SQL Server 2000 como un servidor vinculado. Para ello, ejecute la siguiente instrucción Transact-SQL en el Analizador de consultas:
    EXEC sp_addlinkedserver  '<servidorRemoto>',  N'SQL SERVER' GO

    Nota
    Reemplace servidorRemoto con el nombre del equipo que se debe configurar como el servidor vinculado.
  4. Ejecute una transacción distribuida entre este equipo y el equipo remoto. Para ello, ejecute la siguiente instrucción Transact-SQL en el Analizador de consultas:
    SET xact_abort ON GO USE  pubs GO BEGIN DISTRIBUTED TRANSACTION SELECT  *  FROM <servidorRemoto>.pubs.dbo.authors COMMIT TRAN GO 
    Puede recibir el mensaje de error que se menciona en la sección "Síntomas".

Referencias

Para obtener más información acerca de cómo configurar el Service Pack 2 de Windows XP para utilizarlo con SQL Server 2000, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
841249 Cómo configurar el Service Pack 2 (SP2) de Windows XP para su uso con SQL Server

Propiedades

Id. de artículo: 839279 - Última revisión: miércoles, 5 de abril de 2006 - Versión: 3.4
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
  • the operating system: Microsoft Windows XP SP2
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
Palabras clave: 
kbregistry kberrmsg kbdtc kbdomain kbauthentication kbtransaction kbrpc kbprb KB839279

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com