Como faço para sincronizar trabalhos do SQL Server Agent entre os hosts primário e secundário em minha instância Multi-AZ do RDS para SQL Server?

4 minuto de leitura
0

Quero sincronizar trabalhos do SQL Server Agent entre os hosts primário e secundário na minha instância Multi-AZ do Amazon Relational Database (Amazon RDS) para Microsoft SQL Server. Como faço isso?

Breve descrição

O Amazon RDS para SQL Server usa o recurso sempre ativo/espelhamento para a configuração Multi-AZ nos bastidores. Os trabalhos do SQL Server Agent são armazenados no banco de dados do sistema msdb. Esse banco de dados do sistema não é replicado como parte da implantação Multi-AZ. Portanto, os trabalhos do SQL Server Agent não são sincronizados automaticamente. Você deve recriar os trabalhos na nova primária após o failover. No entanto, os trabalhos estão presentes na primária antiga, onde foram originalmente criados. Se você fizer failback da instância para a primária anterior (onde os trabalhos foram criados inicialmente), ainda verá os trabalhos. Para criar os trabalhos no Multi-AZ, primeiro crie os trabalhos na instância primária (ativa). Em seguida, faça failover da instância do RDS e crie os mesmos trabalhos na nova instância primária.

Para evitar a criação manual de trabalhos na nova primária, ative a replicação de trabalhos do SQL Agent. Quando a replicação de trabalhos está ativada no seu ambiente Multi-AZ, os trabalhos do SQL Server Agent são copiados automaticamente do host primário para o secundário. Você não precisa criar os trabalhos manualmente na nova réplica primária, pois eles foram sincronizados por meio do recurso de replicação do agente. Os trabalhos estão disponíveis nas duas réplicas.

Para obter mais informações, consulte Implantações Multi-AZ do Amazon RDS para Microsoft SQL Server.

Resolução

Ativar o recurso de replicação do agente SQL

Execute o procedimento a seguir com a conta de administrador na instância primária para ativar a replicação de trabalhos do SQL Server Agent.

Observação importante: certifique-se de executar esse procedimento na instância que tem todos os trabalhos de agente disponíveis. Se a instância sem os trabalhos de agente disponíveis se tornar a primária e você ativar esse recurso, todos os trabalhos na instância secundária serão excluídos. Observe também que todos os trabalhos existentes e recém-criados são replicados como parte desse recurso.

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

Validar se o recurso de replicação do agente SQL está ativado

Use a consulta a seguir para verificar se o recurso de replicação está ativado:

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

A consulta anterior retornará SQLagentjob para object_class se o recurso de replicação estiver ativado. Se a consulta não retornar nada, significa que o recurso não está ativado.

Verificar quando os trabalhos novos e modificados foram sincronizados pela última vez com o secundário

Use a consulta a seguir para verificar o valor de last_sync_time da replicação:

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

Nos resultados da consulta, se o tempo de sincronização ultrapassar a hora de atualização ou criação do trabalho, este será sincronizado com a secundária.

Observação: se você não souber a hora da criação ou atualização do trabalho, execute a consulta a seguir para recuperar o carimbo de data/hora e, em seguida, execute a 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

Observação: são necessários alguns minutos para que os trabalhos sejam sincronizados entre as réplicas.

Se quiser realizar o failover do banco de dados para confirmar que os trabalhos estão replicados, aguarde a atualização de last_sync_time antes de prosseguir com o failover Multi-AZ.

Status dos trabalhos na secundária

Um SQL Server Agent XP está no estado Disabled (Desabilitado) com ou sem usar o recurso de replicação na réplica secundária. Portanto, os trabalhos não são executados no servidor secundário.

Categorias de trabalho compatíveis e sem suporte para replicação de trabalhos de agentes

Os trabalhos nas seguintes categorias são replicados:

  • [Sem categoria (Local)]
  • [Sem categoria (vários servidores)]
  • [Sem categoria]
  • Coletor de dados
  • Orientador de ajuste de mecanismo de banco de dados
  • Manutenção de banco de dados
  • Texto completo

Observação: somente trabalhos que usam o tipo de etapa como T-SQL são replicados.

A seguir estão as categorias que não oferecem suporte para replicação:

  • Trabalhos com tipos de etapas, como SQL Server Integration Services (SSIS), SQL Server Reporting Services (SSRS), replicação e PowerShell.
  • Trabalhos que usam Database Mail e objetos em nível de servidor.

Desativar a replicação de trabalhos do SQL Server Agent

Para desativar a replicação de trabalhos do SQL Server Agent, execute o seguinte comando:

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

Depois que você desativar a replicação, as modificações nas tarefas existentes e recém-criadas não serão mais sincronizadas com a outra réplica.