Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Se aplica a:SQL Server
Cuando un grupo de disponibilidad (AG) Always On que contiene una base de datos que es un suscriptor de replicación conmuta por error, se puede producir un error en la suscripción de replicación. Para los suscriptores de inserción de replicación transaccional, el agente de distribución se seguirá replicando automáticamente después de una conmutación por error si la suscripción se creó mediante el nombre de la escucha de grupo de disponibilidad. Para los suscriptores de extracción de replicación transaccional, el agente de distribución se seguirá replicando automáticamente después de una conmutación por error si la suscripción se creó mediante el nombre de la escucha de grupo de disponibilidad y el servidor del suscriptor original está activo y en ejecución. El motivo es que los trabajos del agente de distribución solo se crean en el suscriptor original (réplica principal del grupo de disponibilidad). Para los suscriptores de mezcla, un administrador de replicación debe volver a configurar manualmente el suscriptor volviendo a crear la suscripción.
Qué se admite
La replicación de SQL Server admite la conmutación por error automática del publicador y la conmutación por error automática de los suscriptores transaccionales. Los suscriptores de fusión pueden formar parte de un grupo de disponibilidad. Sin embargo, se requieren acciones manuales para configurar el nuevo suscriptor después de una conmutación por error. Los grupos de disponibilidad no se pueden combinar con escenarios de WebSync y SQL Server Compact.
Creación de una suscripción transaccional en un grupo de disponibilidad
En la replicación transaccional, use los pasos siguientes para configurar y conmutar por error un grupo de disponibilidad de suscriptor:
Antes de crear la suscripción, agregue la base de datos del suscriptor al grupo de disponibilidad adecuado.
Agregue el cliente de escucha del grupo de disponibilidad del suscriptor como un servidor vinculado a todos los nodos del grupo de disponibilidad. Este paso garantiza que todos los posibles asociados de conmutación por error sean conscientes del agente de escucha y se puedan conectar al mismo.
Con el script de la sección Crear una suscripción de inserción de replicación transaccional, cree la suscripción y use el nombre del cliente de escucha del grupo de disponibilidad del suscriptor. Después de una conmutación por error, el nombre del oyente siempre sigue siendo válido, mientras que el nombre actual del servidor del suscriptor depende del nodo actual que se convirtió en el nuevo servidor principal.
Nota:
Debe usar un script de Transact-SQL para crear la suscripción. No puede usar Management Studio.
Para crear una suscripción de extracción:
Con el script de ejemplo de la sección Crear una suscripción de extracción de replicación transaccional, cree la suscripción y use el nombre del cliente de escucha del grupo de disponibilidad del suscriptor.
Después de una conmutación por error, cree el trabajo del agente de distribución en la nueva réplica principal con el procedimiento almacenado
sp_addpullsubscription_agent.
Al crear una suscripción de extracción con la base de datos de la suscripción en un grupo de disponibilidad (AG), después de cada conmutación por error, debe deshabilitar el trabajo del agente de distribución en la réplica principal anterior y habilitar el trabajo en la nueva réplica principal.
Crear una suscripción de inserción de replicación transaccional
-- commands to execute at the publisher, in the publisher database:
USE [<publisher database name>];
GO
EXEC sp_addsubscription @publication = N'<publication name>',
@subscriber = N'<AG listener name>',
@destination_db = N'<subscriber database name>',
@subscription_type = N'Push',
@sync_type = N'automatic',
@article = N'all',
@update_mode = N'read only',
@subscriber_type = 0;
GO
EXEC sp_addpushsubscription_agent @publication = N'<publication name>',
@subscriber = N'<AG listener name>',
@subscriber_db = N'<subscriber database name>',
@job_login = NULL,
@job_password = NULL,
@subscriber_security_mode = 1;
GO
Crear una suscripción de extracción de replicación transaccional
-- commands to execute at the subscriber, in the subscriber database:
USE [<subscriber database name>];
GO
EXEC sp_addpullsubscription @publisher = N'<publisher name>',
@publisher_db = N'<publisher database name>',
@publication = N'<publication name>',
@subscription_type = N'pull';
GO
EXEC sp_addpullsubscription_agent @publisher = N'<publisher name>',
@subscriber = N'<AG listener name or alias>',
@distributor = N'<distributor AG listener name>', -- this parameter should only be used if the distribution database is part of an AG.
@publisher_db = N'<publisher database name>',
@publication = N'<publication name>',
@job_login = NULL,
@job_password = NULL,
@subscriber_security_mode = 1;
GO
Requisito del agente de escucha del grupo de disponibilidad
Al ejecutar sp_addpullsubscription_agent para un suscriptor que forma parte de un grupo de disponibilidad, debe pasar el valor del @subscriber parámetro al procedimiento almacenado como nombre del agente de escucha del grupo de disponibilidad. Si ejecuta SQL Server 2016 (13.x) y versiones anteriores, o SQL Server 2017 (14.x) antes de CU 16, el procedimiento almacenado no hace referencia al nombre del AG listener. Crea la suscripción con el nombre del servidor de suscriptor en el que se ejecuta el comando. Para resolver este problema, actualice manualmente el @subscriber parámetro en el Agente de distribución de replicación con el nombre del oyente del grupo de disponibilidad.
Si el escucha de AG del suscriptor usa un puerto no predeterminado, proporcionar el número de puerto como parte del nombre del escucha de AG en el parámetro @subscriber no está admitido en Windows. Como solución alternativa, puede crear un Alias para el agente de escucha y el puerto en el publicador, el distribuidor y el servidor de suscriptores mediante Alias (Administrador de configuración de SQL Server) o la herramienta SQL Server Client Network Utility (cliconfg) para SQL Server 2022 (16.x) y versiones posteriores, y pasar el alias como valor del parámetro @subscriber.
Reanudar los agentes de mezcla después de la conmutación por error del grupo de disponibilidad del suscriptor
Para la replicación de mezcla, un administrador de replicación debe volver a configurar manualmente el suscriptor con los pasos siguientes:
Ejecute
sp_subscription_cleanuppara eliminar la suscripción antigua del suscriptor. Realice esta acción en la nueva réplica principal (que era antes la réplica secundaria).Vuelva a crear la suscripción, para ello cree una nueva suscripción, comenzando por una nueva instantánea.
Nota:
Este proceso es inconveniente para los suscriptores de replicación por combinación. Sin embargo, el escenario principal para la replicación de combinación es usuarios desconectados (equipos de escritorio, portátiles, dispositivos móviles), que no utilizan grupos de disponibilidad en los suscriptores.