Comment les groupes de disponibilité fonctionnent-ils avec les travaux programmés et les packages SSIS?

8

J'ai 2 serveurs SQL configurés avec une base de données dans un groupe de disponibilité AlwaysOn.

J'ai également mis en place des travaux qui s'exécutent sur la base de données. Lors d'un basculement, comment puis-je m'assurer que les travaux continueront de s'exécuter sur le serveur secondaire? Dois-je installer les travaux et les packages SSIS sur les deux machines et les désactiver manuellement sur la machine secondaire ... puis les activer manuellement en cas de basculement? Ou existe-t-il une fonctionnalité intégrée pour gérer cela?

John
la source

Réponses:

4

Oui, vous devrez créer les travaux sur toutes les autres réplicas que vous souhaitez que ces travaux spécifiques s'exécutent s'il s'agissait du réplica principal.

Vous devrez créer votre propre logique pour savoir si / quand chaque travail de l'Agent SQL Server s'exécutera . Par exemple, souhaitez-vous exécuter un travail uniquement si l'instance actuelle est la réplique principale d'un groupe de disponibilité particulier? Vous devrez mettre cela dans votre travail. Il ne peut pas être supprimé automatiquement, car cela enlèverait la flexibilité de AlwaysOn AG. Que vous souhaitiez les désactiver sur les répliques secondaires dépend entièrement de vous, de ce que font ces travaux et comment / quand / si vous souhaitez qu'ils s'exécutent.

N'oubliez pas que le serveur de réplique secondaire n'est pas seulement un serveur de secours en attente de basculement. Il pourrait s'agir d'un serveur entièrement fonctionnel et accessible. Pour cette raison, avoir chaque emploi assis au ralenti serait un énorme handicap.

Donc, oui, vous devrez pousser nos travaux vers d'autres répliques et utiliser une logique pour savoir si le travail doit continuer son exécution au démarrage.

Par exemple, les tâches de sauvegarde peuvent tirer parti de la fonction sys.fn_hadr_backup_is_preferred_replica en déterminant si la réplique actuelle est la réplique préférée pour une base de données particulière. Cela permettra de déterminer la configuration de votre groupe de disponibilité pour les préférences de sauvegarde.

Thomas Stringer
la source
Cela semble prometteur. Je veux seulement que les travaux s'exécutent sur le serveur principal (quel que soit le serveur qui puisse être à l'époque)
John
1

J'ai rencontré un peu de frustration similaire avec la documentation de Books Online disant «lors de la planification de votre travail, ajoutez une logique pour exécuter uniquement sur le primaire» mais ne dites pas comment le faire. Le sys.fn_hadr_backup_is_preferred_replica est super sympa pour les jobs de sauvegarde, mais il ne semble pas y avoir de fonction similaire pour 'is primary' ou ce que vous avez. Heureusement, vous pouvez récupérer ces informations à partir de quelque chose comme ceci:

select 
  DB_NAME(database_id),role_desc
from 
  sys.dm_hadr_availability_replica_states a
inner join 
  sys.dm_hadr_database_replica_states d
on 
  a.replica_id = d.replica_id
  and
  a.group_id = d.group_id
where 
  database_id = DB_ID()
and 
  d.is_local = 1

Cela vous permettrait simplement de connaître le rôle de la base de données actuelle.

sdcharle
la source