¿Cómo puedo sincronizar los trabajos de SQL Server Agent entre los hosts principales y secundarios de mi instancia de RDS para SQL Server multi-AZ?

5 minutos de lectura
0

Quiero sincronizar los trabajos de SQL Server Agent entre los hosts principales y secundarios de Amazon Relational Database Service (Amazon RDS) para la instancia multi-AZ de Microsoft SQL Server. ¿Cómo lo hago?

Descripción corta

Amazon RDS para SQL Server utiliza siempre la función de creación de duplicados para la configuración multi-AZ en segundo plano. Los trabajos de SQL Server Agent se almacenan en la base de datos de sistema msdb. Esta base de datos de sistema no se replica como parte de la implementación multi-AZ. Por lo tanto, los trabajos de SQL Server Agent no se sincronizan automáticamente. Debe volver a crear los trabajos en el nuevo host principal después de la conmutación por error. Sin embargo, los trabajos están presentes en el antiguo host principal donde se crearon originalmente. Si conmuta por error la instancia al host principal anterior (donde se crearon inicialmente los trabajos), seguirá viendo los trabajos. Para crear los trabajos en multi-AZ, cree primero los trabajos en la instancia principal (activa). A continuación, realice una conmutación por error en la instancia de RDS y cree los mismos trabajos en la nueva instancia principal.

Para evitar la creación manual de trabajos en la nueva página principal, active la replicación de trabajos de SQL Agent. Cuando la replicación de trabajos está activada en su entorno multi-AZ, los trabajos de SQL Server Agent se copian automáticamente del host principal al host secundario. No es necesario crear los trabajos de manera manual en la nueva réplica principal porque se sincronizan mediante la función de replicación del agente. Los trabajos están disponibles en ambas réplicas.

Para obtener más información, consulte Implementaciones en zonas de disponibilidad múltiples de Amazon RDS para Microsoft SQL Server.

Resolución

Activar la función de replicación del agente SQL

Ejecute el siguiente procedimiento con la cuenta de administrador de la instancia principal para activar la replicación de trabajos de SQL Server Agent.

Nota importante: Asegúrese de ejecutar este procedimiento en la instancia que tiene todos los trabajos de agente disponibles. Si la instancia sin los trabajos de agente disponibles pasa a ser la principal y se activa esta función, se eliminarán todos los trabajos de la instancia secundaria. Tenga en cuenta también que todos los trabajos existentes y recién creados se replican como parte de esta función.

EXECUTE msdb.dbo.rds_set_system_database_sync_objects
@object_types = 'SQLAgentJob';

Comprobar que la función de replicación del agente SQL está activada

Utilice la siguiente consulta para verificar que la función de replicación esté activada:

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

La consulta anterior devuelve SQLagentjob para object_class si la función de replicación está activada. Si la consulta no devuelve nada, significa que la función no está activada.

Comprobar cuándo los trabajos modificados y nuevos se sincronizaron por última vez con el trabajo secundario

Utilice la siguiente consulta para comprobar el valor last_sync_time (última hora de sincronización) de la replicación:

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

En los resultados de la consulta, si la hora de sincronización es posterior a la actualización del trabajo o de la hora de creación, el trabajo se sincronizará con el trabajo secundario.

Nota: Si no sabe la hora de creación o actualización del trabajo, ejecute la siguiente consulta para recuperar la marca de tiempo y, a continuación, ejecute la consulta anterior:

select name as 'JobName'
,JobStatus = CASE
    When enabled =1 Then 'Active'
    Else 'Inactive'
    END
,date_created As 'JobCreatedOn' ,date_modified as 'LastModified'
from msdb..sysjobs

Nota: Los trabajos tardan unos minutos en sincronizarse entre las réplicas.

Si desea realizar una conmutación por error de base de datos para confirmar que los trabajos están replicados, espere a que se actualice last_sync_time antes de continuar con la conmutación por error multi-AZ.

Estado de los trabajos en la réplica secundaria

Un SQL Server Agent XP se encuentra en el estado Disabled (Desactivado) con o sin usar la función de replicación en la réplica secundaria. Por lo tanto, los trabajos no se ejecutan en el servidor secundario.

Categorías de trabajo compatibles y no compatibles para la replicación de tareas de agentes

Se replican los trabajos de las siguientes categorías:

  • [Uncategorized (Local)] (Sin categoría [Local])
  • [Uncategorized (Multi-Server)] (Sin categoría [Multiservidor])
  • [Uncategorized] (Sin categoría)
  • Data Collector (Recopilador de datos)
  • Database Engine Tuning Advisor (Asesor de optimización de motores de bases de datos)
  • Database Maintenance (Mantenimiento de base de datos)
  • Full-Text (Texto completo)

Nota: Solo se replican los trabajos que utilizan el tipo de paso T-SQL.

A continuación, se indican categorías que no admiten la replicación:

  • Trabajos con tipos de pasos como SQL Server Integration Services (SSIS), SQL Server Reporting Services (SSRS), replicación y PowerShell.
  • Trabajos que utilizan Database Mail y objetos a nivel de servidor.

Desactivar la replicación de tareas de SQL Server Agent

Para desactivar la replicación de tareas de SQL Server Agent, ejecute el siguiente comando:

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = '';

Después de desactivar la replicación, las modificaciones en los trabajos existentes y recién creados ya no se sincronizan con la otra réplica.