Solucionar problemas de configuración de la creación de reflejo de la base de datos

Actualizado: 17 de noviembre de 2008

En este tema se ofrece información que le ayudará a solucionar problemas de configuración de una sesión de creación de reflejo de una base de datos.

Problema Resumen

Cuentas

Explica los requisitos para configurar correctamente las cuentas en que se ejecuta SQL Server.

Extremos

Explica los requisitos para configurar correctamente el extremo de la creación de reflejo de la base de datos de cada instancia de servidor.

Dirección del sistema

Resume las alternativas para especificar el nombre del sistema de una instancia de servidor en una configuración de reflejo de la base de datos.

Acceso de red

Explica el requisito por el que cada instancia de servidor debe poder tener acceso a los puertos de las otras instancias de servidor a través de TCP.

Preparación de la base de datos reflejada

Resume los requisitos de preparación de la base de datos reflejada para habilitar el inicio de la creación de reflejo.

Error en una operación de creación de archivo

Describe cómo responder a un error en una operación de creación de archivo.

Iniciar creación de reflejo (Transact-SQL)

Describe el orden necesario para las instrucciones ALTER DATABASE database_name SET PARTNER ='partner_server'.

Cuentas

Las cuentas en las que se ejecuta SQL Server deben estar configuradas correctamente.

  1. ¿Tienen las cuentas los permisos adecuados?
    1. Si las cuentas se ejecutan en el mismo dominio, disminuye la probabilidad de una configuración incorrecta.
    2. Si las cuentas se ejecutan en distintos dominios o no son cuentas de dominio, cree en la base de datos master del otro equipo el inicio de sesión de una cuenta y concédale permisos CONNECT en el extremo. Para obtener más información, vea Administrar los metadatos cuando una base de datos pasa a estar disponible en otra instancia de servidor. Esto incluye la cuenta Servicio de red.
  2. Si SQL Server se ejecuta como un servicio que usa la cuenta del sistema local, deben utilizarse certificados para la autenticación. Para obtener más información, vea Usar certificados para la creación de reflejos de la base de datos.

Extremos

Los extremos deben estar configurados correctamente.

  1. Asegúrese de que cada instancia de servidor (principal, reflejado y testigo, si existe) tiene un extremo de reflejo de la base de datos. Para obtener más información, vea sys.database_mirroring_endpoints (Transact-SQL) y, en función del modo de autenticación, Cómo crear un extremo de reflejo para la autenticación de Windows (Transact-SQL) o Cómo permitir que la creación de reflejo de la base de datos utilice certificados para las conexiones salientes (Transact-SQL).

  2. Compruebe que los números de puerto son correctos.
    Para identificar el puerto asociado actualmente al extremo de reflejo de la base de datos de una instancia de servidor, utilice la siguiente instrucción Transact-SQL:

    SELECT type_desc, port FROM sys.tcp_endpoints;
    GO
    
  3. En caso de problemas de configuración de la creación de reflejo de la base de datos difíciles de explicar, se recomienda inspeccionar cada una de las instancias de servidor para determinar si escuchan en los puertos correctos. Para obtener información acerca de cómo comprobar la disponibilidad de los puertos, vea MSSQLSERVER_1418.

  4. Asegúrese de que se han iniciado los extremos (STATE=STARTED). En cada una de las instancias de servidor, utilice la siguiente instrucción Transact-SQL:

    SELECT state_desc FROM sys.database_mirroring_endpoints
    

    Para obtener más información acerca de la columna state_desc, vea sys.database_mirroring_endpoints (Transact-SQL).
    Para iniciar un extremo, utilice la siguiente instrucción Transact-SQL:

    ALTER ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS TCP (LISTENER_PORT = <port_number>)
    FOR database_mirroring (ROLE = ALL);
    GO
    

    Para obtener más información, vea ALTER ENDPOINT (Transact-SQL).

  5. Compruebe que el valor de ROLE sea correcto. En cada una de las instancias de servidor, utilice la siguiente instrucción Transact-SQL:

    SELECT role FROM sys.database_mirroring_endpoints;
    GO
    

    Para obtener más información, vea sys.database_mirroring_endpoints (Transact-SQL).

  6. Asegúrese de que el inicio de sesión del otro servidor dispone de permiso CONNECT. Para determinar quién tiene permiso CONNECT para un extremo, utilice la siguiente instrucción Transact-SQL en cada instancia de servidor:

    SELECT 'Metadata Check';
    SELECT EP.name, SP.STATE, 
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) 
          AS GRANTOR, 
       SP.TYPE AS PERMISSION,
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) 
          AS GRANTEE 
       FROM sys.server_permissions SP , sys.endpoints EP
       WHERE SP.major_id = EP.endpoint_id
       ORDER BY Permission,grantor, grantee; 
    GO
    

Dirección del sistema

Como nombre del sistema de una instancia de servidor en una configuración de creación de reflejo de la base de datos, se puede utilizar cualquier nombre que identifique el sistema de forma inequívoca. La dirección del sistema puede ser un nombre del sistema (si los sistemas se encuentran en el mismo dominio), un nombre de dominio completo o una dirección IP (de preferencia, una dirección IP estática). Se garantiza que el uso de un nombre de dominio completo funciona correctamente. Para obtener más información, vea Especificar una dirección de red de servidor (creación de reflejo de la base de datos).

Acceso de red

Cada instancia de servidor debe tener acceso a los puertos de las demás instancias de servidor a través de TCP. Esto es especialmente importante si las instancias de servidor están en distintos dominios que no confían unos en otros (dominios que no son de confianza). Así se restringe mucho la comunicación entre las instancias de servidor.

Preparación de la base de datos reflejada

Cuando se inicia la creación de reflejo por primera vez o se inicia de nuevo después de eliminar la creación de reflejo, compruebe que la base de datos reflejada esté preparada para esta operación.

Al crear la base de datos reflejada en el servidor reflejado, asegúrese de restaurar la copia de seguridad de la base de datos principal especificando la misma base de datos con la opción WITH NORECOVERY. Además, también deben aplicarse todas las copias de seguridad de registros creadas después de crear la copia de seguridad, de nuevo con WITH NORECOVERY.

Además, se recomienda que, si es posible, la ruta de acceso (incluida la letra de unidad) de la base de datos reflejada sea idéntica a la de la base de datos principal. Si los diseños de archivo deben ser diferentes (por ejemplo, si la base de datos principal se encuentra en la unidad "F:" pero el sistema del servidor reflejado no tiene unidad F:), se debe incluir la opción MOVE en la instrucción RESTORE.

ms189127.note(es-es,SQL.90).gifImportante:
Si mueve los archivos de la base de datos al crear la base de datos reflejada, es posible que no pueda agregar archivos a la base de datos posteriormente sin suspender la creación de reflejo.

Si la creación de reflejo de la base de datos se ha detenido, todas las copias de seguridad de registros subsiguientes que se realicen en la base de datos principal deben aplicarse a la base de datos reflejada para poder reiniciar la creación de reflejo.

Para obtener más información, vea Cómo preparar una base de datos reflejada para la creación de reflejo (Transact-SQL).

Error en una operación de creación de archivo

Para poder agregar un archivo sin influir en la sesión de creación de reflejo, la ruta de acceso del archivo debe existir en ambos servidores. Por consiguiente, si mueve los archivos de base de datos al crear la base de datos reflejada, se podría producir un error en una operación posterior para agregar un archivo en la base de datos reflejada y provocar que se suspendiera la creación de reflejo.

Para corregir el problema:

  1. El propietario de la base de datos debe quitar la sesión de creación de reflejo y restaurar una copia de seguridad completa del grupo de archivos que contiene el archivo agregado.
  2. A continuación, el propietario debe hacer una copia de seguridad de registros que contenga la operación para agregar el archivo en el servidor principal y restaurar manualmente la copia de seguridad de registros en la base de datos reflejada utilizando las opciones WITH NORECOVERY y MOVE. Al hacer esto se crea la ruta de acceso al archivo especificada en el servidor reflejado y se restaura el archivo nuevo en esa ubicación.
  3. Para preparar la base de datos para una nueva sesión de creación de reflejo, el propietario debe restaurar también WITH NO RECOVERY cualquier otra copia de seguridad de registros pendiente a partir del servidor principal.

Para obtener más información, vea Quitar la creación de reflejo de la base de datos, Cómo preparar una base de datos reflejada para la creación de reflejo (Transact-SQL), Cómo establecer una sesión de creación de reflejo de la base de datos mediante la autenticación de Windows (Transact-SQL), Usar certificados para la creación de reflejos de la base de datos o Cómo configurar una sesión de creación de reflejo de la base de datos (SQL Server Management Studio).

Iniciar la creación de reflejo (Transact-SQL)

El orden en que se emiten las instrucciones ALTER DATABASE database_name SET PARTNER ='partner_server' es muy importante:

  1. La primera instrucción se debe ejecutar en el servidor reflejado. Cuando se emite la instrucción, el servidor reflejado no intenta ponerse en contacto con ninguna otra instancia de servidor. En lugar de ello, el servidor reflejado indica a su base de datos que espere a que el servidor principal se haya puesto en contacto con el servidor reflejado.
  2. La segunda instrucción ALTER DATABASE se debe ejecutar en el servidor principal. Esta instrucción provoca que el servidor principal intente conectarse al servidor reflejado. Una vez creada dicha conexión, el servidor reflejado intenta conectarse al servidor principal a través de otra conexión.

Para obtener más información, vea ALTER DATABASE (Transact-SQL).

Mensaje de error 1418

Este mensaje de SQL Server indica que la dirección de red del servidor no se encuentra o no existe, y recomienda que se compruebe el nombre de dirección de red y se vuelva a emitir el comando. Para obtener más información, vea MSSQLSERVER_1418.

Transacciones entre bases de datos

Cuando se realiza la creación de reflejo de una base de datos en modo de alta seguridad con conmutación por error automática, dicha conmutación puede generar una solución automática y posiblemente incorrecta de transacciones dudosas. Si se produce una conmutación por error automática en una base de datos cuando se está confirmando una transacción entre bases de datos, se pueden generar incoherencias lógicas entre las bases de datos.

Los tipos de transacciones entre bases de datos que pueden verse afectadas por una conmutación por error automática son:

  • Una transacción que actualice varias bases de datos en la misma instancia de SQL Server.
  • Transacciones que utilizan el Coordinador de transacciones distribuidas de Microsoft (MS DTC).

Para obtener más información, vea Creación de reflejo de la base de datos y transacciones entre bases de datos.

Vea también

Tareas

Cómo crear un extremo de reflejo para la autenticación de Windows (Transact-SQL)

Conceptos

Seguridad en el transporte para la creación del reflejo de una base de datos

Otros recursos

Configurar la creación de reflejo de la base de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

17 de noviembre de 2008

Contenido modificado:
  • Se revisó la sección "Error en una operación de creación de archivo" completamente.

14 de abril de 2006

Contenido nuevo:
  • Se agregó una sección sobre el tratamiento de una sesión suspendida debido a un error en una operación de creación de archivo.
  • Se agregó una sección sobre las transacciones entre bases de datos.
Contenido modificado:
  • Se eliminó "Responder a un problema de la unidad de registro del servidor principal" porque el problema subyacente se ha solucionado.

5 de diciembre de 2005

Contenido nuevo:
  • Interpretar el mensaje de error 1418
  • Comprobar la disponibilidad de los puertos
Contenido modificado:
  • Se quitó la información relativa a que el nombre de dominio completo es el único método para identificar el sistema de un asociado o testigo.