Compartir a través de


Configuración de Transact-SQL y modos de funcionamiento de la creación de reflejo de la base de datos

Este tema trata sobre el funcionamiento de una sesión de creación de reflejo de la base de datos desde el punto de vista de la configuración de ALTER DATABASE y de los estados de la base de datos reflejada y del testigo. Este tema está dirigido a los usuarios que administran la creación de reflejo de la base de datos principal o exclusivamente mediante Transact-SQL, en vez de mediante Microsoft SQL Server Management Studio. Si no está familiarizado con los modos de funcionamiento, vea Sesiones de creación de reflejo de la base de datos.

Nota

Como alternativa al uso de Transact-SQL, puede controlar el modo de funcionamiento de una sesión en el Explorador de objetos mediante la página Creación de reflejos del cuadro de diálogo Propiedades de la base de datos. Para obtener más información, vea Cómo configurar una sesión de creación de reflejo de la base de datos (SQL Server Management Studio).

Cómo la seguridad de transacción y el estado del testigo afectan al modo de funcionamiento

El modo de funcionamiento de una sesión viene determinado por la combinación de su configuración de seguridad de las transacciones y el estado del testigo. En cualquier momento, el propietario de la base de datos puede cambiar la configuración de seguridad de las transacciones y puede agregar o quitar el testigo.

Seguridad de las transacciones

La seguridad de las transacciones es una propiedad de base de datos específica de la creación de reflejo que determina si una sesión de creación de reflejo de base de datos funciona de forma sincrónica o asincrónica. Hay dos niveles de seguridad: FULL y OFF.

  • SAFETY FULL

    La seguridad de las transacciones completa hace que la sesión funcione de forma asincrónica en modo de alta seguridad. Si existe un testigo, una sesión admite la conmutación automática por error.

    Cuando se establece una sesión mediante instrucciones ALTER DATABASE, ésta empieza con el valor SAFETY establecido en FULL; es decir, la sesión empieza en modo de alta seguridad. Una vez que se ha iniciado la sesión, puede agregarse un testigo.

    Para obtener más información, vea Creación de reflejo sincrónico de la base de datos (modo de alta seguridad).

  • SAFETY OFF

    Desactivar la seguridad de las transacciones hace que la sesión funcione de forma asincrónica, en modo de alto rendimiento. Si la propiedad SAFETY está establecida en OFF, la propiedad WITNESS también debe estar establecida en OFF (el valor predeterminado). Para obtener información acerca del efecto del testigo en el modo de alto rendimiento, vea "Estado del testigo" a continuación. Para obtener más información acerca de la ejecución con la seguridad de las transacciones desactivada, vea Operación asincrónica de creación de reflejo de la base de datos (Modo de alto rendimiento).

La configuración de seguridad de las transacciones de la base de datos está registrada en cada asociado de la vista de catálogo sys.database_mirroring en las columnas mirroring_safety_level y mirroring_safety_level_desc. Para obtener más información, vea sys.database_mirroring (Transact-SQL).

El propietario de la base de datos puede cambiar el nivel de seguridad de las transacciones en cualquier momento.

Estado del testigo

Si se establece un testigo, es necesario que haya quórum, por lo que el estado del testigo será siempre significativo.

Si existe, el testigo tendrá uno de estos dos estados:

  • Cuando el testigo está conectado a un asociado, el testigo tiene el estado CONNECTED en relación con el asociado y tiene quórum con ese asociado. En este caso, la base de datos puede estar disponible, incluso si alguno de los asociados no está disponible.

  • Cuando hay un testigo pero no está conectado a un asociado, el testigo tiene el estado UNKOWN o DISCONNECTED en relación con el asociado. En este caso, el testigo carece de quórum con ese asociado y, si los asociados no están conectados entre sí, la base de datos se vuelve no disponible.

Para obtener información sobre el quórum, vea Quórum: cómo un testigo afecta a la disponibilidad de la base de datos.

El estado de cada testigo en una instancia de servidor se registra en la vista de catálogo sys.database_mirroring, en las columnas mirroring_witness_state y mirroring_witness_state_desc. Para obtener más información, vea sys.database_mirroring (Transact-SQL).

En la tabla siguiente se resume cómo el modo de funcionamiento de una sesión depende de su configuración de seguridad de las transacciones y del estado del testigo.

Modo de funcionamiento

Seguridad de las transacciones

Estado del testigo

Modo de alto rendimiento

OFF

NULL (sin testigo)2

Modo de alta seguridad sin conmutación automática por error

FULL

NULL (sin testigo)

Modo de alta seguridad con conmutación automática por error1

FULL

CONNECTED

1 Si el testigo se desconecta, se recomienda establecer WITNESS OFF hasta que la instancia del servidor testigo esté disponible.

2 Si hay un testigo en modo de alto rendimiento, no participa en la sesión. Sin embargo, para que la base de datos esté disponible, al menos dos de las instancias de servidor deben permanecer conectadas. Por lo tanto, se recomienda mantener la propiedad WITNESS establecida en OFF en las sesiones en modo de alto rendimiento. Para obtener más información, vea Quórum: cómo un testigo afecta a la disponibilidad de la base de datos.

Ver la configuración de seguridad y el estado del testigo

Para ver la configuración de seguridad y el estado del testigo de una base de datos, utilice la vista de catálogo sys.database_mirroring. Las columnas relevantes son:

Factor

Columnas

Descripción

Seguridad de las transacciones

mirroring_safety_level o mirroring_safety_level_desc

La configuración de seguridad de las transacciones para las actualizaciones de la base de datos reflejada es una de las siguientes:

UNKNOWN

OFF

FULL

NULL= la base de datos no está en línea.

¿Existe un testigo?

mirroring_witness_name

Nombre de servidor del testigo de creación de reflejo de la base de datos o NULL, que indica que no existe ningún testigo.

Estado del testigo

mirroring_witness_state o mirroring_witness_state_desc

Estado del testigo en la base de datos en un determinado asociado:

UNKNOWN

CONNECTED

DISCONNECTED

NULL = no existe ningún testigo o la base de datos no está en línea.

Por ejemplo, en el servidor principal o el servidor reflejado, escriba:

SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring

Para obtener más información acerca de esta vista de catálogo, vea sys.database_mirroring (Transact-SQL).

Factores que afectan el comportamiento en caso de pérdida del servidor principal

En la tabla siguiente se resume el efecto combinado de la configuración de seguridad de las transacciones, el estado de la base de datos y el estado del testigo en el comportamiento de una sesión de creación de reflejos en caso de pérdida del servidor principal.

Seguridad de las transacciones

Estado del reflejo de la base de datos reflejada

Estado del testigo

Comportamiento al perderse el servidor principal

FULL

SYNCHRONIZED

CONNECTED

Se produce la conmutación automática por error.

FULL

SYNCHRONIZED

DISCONNECTED

El servidor reflejado se detiene; la conmutación por error no es posible y no se puede hacer que la base de datos esté disponible.

OFF

SUSPENDED o DISCONNECTED

NULL (sin testigo)

El servicio se puede forzar en el servidor reflejado (con posible pérdida de datos).

FULL

SYNCHRONIZING o SUSPENDED

NULL (sin testigo)

El servicio se puede forzar en el servidor reflejado (con posible pérdida de datos).