Comment synchroniser les tâches de l'Agent SQL Server entre les hôtes principal et secondaire de mon instance RDS pour SQL Server Multi-AZ ?

Lecture de 5 minute(s)
0

Je souhaite synchroniser les tâches de l'Agent SQL Server entre les hôtes principal et secondaire de mon instance Amazon base de données relationnelle (Amazon RDS) pour Microsoft SQL Server Multi-AZ. Comment procéder ?

Brève description

Amazon RDS for SQL Server utilise toujours la fonction on/Mirroring pour la configuration multi-AZ en arrière-plan. Les tâches de l'agent SQL Server sont stockées dans la base de données système msdb. Cette base de données système n'est pas répliquée dans le cadre de votre déploiement Multi-AZ. Les tâches de l'agent SQL Server ne sont donc pas synchronisées automatiquement. Vous devez recréer les tâches sur le nouveau serveur principal après le basculement. Cependant, les emplois sont présents dans l'ancienne école primaire où ils ont été créés à l'origine. Si vous retournez l'instance vers l'instance principale précédente (où les tâches ont été initialement créées), vous verrez toujours les tâches. Pour créer les tâches dans Multi-AZ, créez d'abord les tâches dans l'instance principale (active). Ensuite, effectuez un basculement sur l'instance RDS et créez les mêmes tâches sur la nouvelle instance principale.

Pour éviter de créer manuellement des tâches sur le nouveau serveur principal, activez la réplication des tâches dans SQL Agent. Lorsque la réplication des tâches est activée dans votre environnement Multi-AZ, les tâches de l'agent SQL Server sont automatiquement copiées de l'hôte principal vers l'hôte secondaire. Il n'est pas nécessaire de créer les tâches manuellement sur le nouveau réplica principal, car elles sont synchronisées via la fonction de réplication de l'agent. Les jobs sont disponibles dans les deux répliques.

Pour plus d'informations, consultez la section Déploiements multi-AZ pour Amazon RDS for Microsoft SQL Server.

Solution

Activer la fonctionnalité de réplication de l'Agent SQL

Exécutez la procédure suivante avec le compte administrateur sur l'instance principale pour activer la réplication des tâches de SQL Server Agent.

Remarque importante : Assurez-vous d'exécuter cette procédure sur l'instance sur laquelle toutes les tâches d'agent sont disponibles. Si l'instance sans les tâches d'agent disponibles devient la principale et que vous activez cette fonctionnalité, toutes les tâches de l'instance secondaire sont supprimées. Notez également que toutes les tâches existantes et nouvellement créées sont répliquées dans le cadre de cette fonctionnalité.

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

Vérifiez que la fonctionnalité de réplication de l'agent SQL est activée

Utilisez la requête suivante pour vérifier que la fonction de réplication est activée :

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

La requête précédente renvoie SQLAgentJob pour object_class si la fonction de réplication est activée. Si la requête ne renvoie rien, cela signifie que la fonctionnalité n'est pas activée.

Vérifiez la date de dernière synchronisation des tâches modifiées et des nouvelles tâches avec la tâche secondaire

Utilisez la requête suivante pour vérifier le last_sync_time de la réplication :

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

Dans les résultats de la requête, si le temps de synchronisation est dépassé l'heure de mise à jour ou de création de la tâche, la tâche est synchronisée avec la tâche secondaire.

Remarque : Si vous ne connaissez pas l'heure de création ou de mise à jour de la tâche, exécutez la requête suivante pour récupérer l'horodatage, puis exécutez la requête précédente :

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

Remarque : La synchronisation des tâches entre les répliques prend quelques minutes.

Si vous souhaitez effectuer un basculement de base de données pour confirmer que les tâches sont répliquées, attendez que last_sync_time soit mis à jour avant de procéder au basculement multi-AZ.

Statut des emplois dans le secondaire

Un agent SQL Server XP est dans l'état Désactivé avec ou sans utilisation de la fonction de réplication sur le réplica secondaire. Les tâches ne s'exécutent donc pas sur le serveur secondaire.

Catégories de tâches compatibles et non prises en charge pour la réplication des tâches des agents

Les emplois des catégories suivantes sont répliqués :

  • [Non classé (local)]
  • [Non classé (multi-serveurs)]
  • [Non classé]
  • Collecteur de données
  • Conseiller de réglage du moteur de base
  • Maintenance des bases
  • Texte intégral

Remarque : Seules les tâches utilisant le type d'étape T-SQL sont répliquées.

Les catégories suivantes ne prennent pas en charge la réplication :

  • Tâches comportant des types d'étapes tels que SQL Server Integration Services (SSIS), SQL Server Reporting Services (SSRS), réplication et PowerShell.
  • Tâches utilisant la messagerie de base de données et des objets de niveau serveur.

Désactiver la réplication des tâches de l'agent SQL Server

Pour désactiver la réplication des tâches de l'agent SQL Server, exécutez la commande suivante :

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

Une fois que vous avez désactivé la réplication, les modifications apportées aux tâches existantes et nouvellement créées ne sont plus synchronisées avec l'autre réplique.