Come funzionano i gruppi di disponibilità con lavori programmati e pacchetti SSIS?


8

Ho 2 server SQL impostati con un database in un gruppo di disponibilità AlwaysOn.

Ho anche creato dei lavori che vanno contro il database. Durante un failover come posso garantire che i lavori continueranno a essere eseguiti sul server secondario? Devo installare i lavori e i pacchetti SSIS su entrambi i computer e disabilitarli manualmente sul computer secondario ... quindi abilitarli manualmente in caso di failover? O esiste una funzionalità integrata per gestire questo?

Risposte:


4

Sì, sarà necessario creare i lavori su qualsiasi altra replica che si desidera eseguire quei lavori specifici se fossero la replica primaria.

Sarà necessario creare la propria logica per se / quando verrà eseguito ciascun processo di SQL Server Agent . Ad esempio, si desidera eseguire un processo solo se l'istanza corrente è la replica primaria di un determinato gruppo di disponibilità? Dovrai metterlo nel tuo lavoro. Non può essere coperto automaticamente, perché ciò eliminerebbe la flessibilità di AlwaysOn AG. Se li desideri disabilitati sulle repliche secondarie dipende completamente da te, cosa fanno quei lavori e come / quando / se vuoi che vengano eseguiti.

Ricordare che il server di replica secondario non è solo un server di standby in attesa di failover. Potrebbe essere un server completamente funzionale e accessibile. Per questo motivo, avere ogni lavoro seduto inattivo sarebbe un'enorme disabilità.

Quindi, sì, dovrai spingere i nostri lavori su altre repliche e usare una logica come se il lavoro dovesse continuare l'esecuzione quando inizia.

Ad esempio, i processi di backup possono sfruttare la funzione sys.fn_hadr_backup_is_preferred_replica determinando se la replica corrente è quella preferita per un determinato database. Questo deriverà da come hai impostato il tuo gruppo di disponibilità per le preferenze di backup.


Sembra promettente. Voglio solo che i lavori vengano eseguiti sul server primario (qualunque server possa essere in quel momento).
Giovanni

1

Ho riscontrato un po 'di frustrazione simile con la documentazione su Books Online che dice "quando pianifichi il tuo lavoro, aggiungi la logica da eseguire solo sul primario" ma non dice come farlo. Sys.fn_hadr_backup_is_preferred_replica è eccellente per i processi di backup, ma non sembra esserci una funzione simile per 'is primary' o per quello che hai. Fortunatamente puoi prendere queste informazioni da qualcosa del genere:

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

Ciò ti farebbe semplicemente sapere il ruolo nel database corrente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.