Eu tenho 2 servidores SQL configurados com um banco de dados em um grupo de disponibilidade AlwaysOn.
Também tenho trabalhos configurados que são executados no banco de dados. Durante um failover, como garanto que os trabalhos continuarão em execução no servidor secundário? Preciso instalar os trabalhos e pacotes SSIS em ambas as máquinas e desativá-los manualmente na máquina secundária... e ativá-los manualmente no caso de um failover? Ou existe uma funcionalidade integrada para lidar com isso?
Sim, você precisará criar as tarefas em quaisquer outras réplicas que gostaria que essas tarefas específicas executassem se fossem a réplica primária.
Você precisará criar sua própria lógica para se/quando cada trabalho do SQL Server Agent será executado . Por exemplo, você deseja executar um trabalho somente se a instância atual for a réplica primária de um Grupo de Disponibilidade específico? Você precisará colocar isso em seu trabalho. Não pode ser coberto automaticamente, porque isso tiraria a flexibilidade do AlwaysOn AG. Se você deseja desativá-los na(s) réplica(s) secundária(s) depende totalmente de você, o que esses trabalhos fazem e como/quando/se você deseja que eles sejam executados.
Lembre-se de que o servidor de réplica secundário não é apenas um servidor de reserva aguardando o failover. Pode ser um servidor totalmente funcional e acessível. Por causa disso, ter todos os trabalhos parados seria uma grande deficiência.
Então, sim, você precisará enviar nossos trabalhos para outras réplicas e usar alguma lógica para saber se o trabalho deve continuar a execução quando for iniciado.
Por exemplo, as tarefas de backup podem aproveitar a função sys.fn_hadr_backup_is_preferred_replica determinando se a réplica atual é a preferencial para um determinado banco de dados. Isso derivará de como você configurou seu grupo de disponibilidade para preferências de backup.
Eu encontrei um pouco de frustração semelhante com a documentação nos Livros Online dizendo 'ao agendar seu trabalho, adicione lógica para executar apenas no primário', mas não dizendo como fazer isso. O sys.fn_hadr_backup_is_preferred_replica é super bom para tarefas de backup, mas não parece haver uma função semelhante para 'é primário' ou o que você tem. Felizmente, você pode obter essas informações de algo como isto:
Isso apenas permitiria que você soubesse a função em que o banco de dados atual está.