Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:Instância Gerenciada de SQL do Azure
Este artigo ensina como monitorar e solucionar problemas com um link entre o SQL Server e a Instância Gerenciada de SQL do Azure.
Você pode verificar o estado do link com Transact-SQL (T-SQL), Azure PowerShell ou a CLI do Azure. Se você encontrar problemas, poderá usar os códigos de erro para solucionar o problema.
Muitos problemas com a criação do link podem ser resolvidos verificando a rede entre as duas instâncias e validando se o ambiente foi preparado corretamente para o link.
Propagação inicial
Ao estabelecer um vínculo entre o SQL Server e a Instância Gerenciada de SQL do Azure, há uma fase inicial de propagação antes do início da replicação de dados. A fase de propagação inicial é a parte da operação mais longa e custosa. Após a conclusão da propagação inicial, os dados são sincronizados e somente as alterações de dados subsequentes são replicadas. O tempo necessário para que a propagação inicial seja concluída depende do tamanho dos dados, da intensidade da carga de trabalho nos bancos de dados primários e da velocidade do vínculo entre as redes das réplicas primária e secundária.
Caso a velocidade do link entre as duas instâncias seja mais lenta do que o necessário, provavelmente o tempo de propagação será significativamente afetado. Você pode usar a velocidade de propagação declarada, o tamanho total dos dados e a velocidade do link para estimar quanto tempo a fase de propagação inicial levará antes do início da replicação de dados. Por exemplo, para um único banco de dados de 100 GB, a fase inicial de preparação levaria cerca de 1,2 horas se o link fosse capaz de transferir 84 GB por hora e se não houver nenhum outro banco de dados sendo preparado para um link diferente. Se o link só puder transferir 10 GB por hora, a propagação de um banco de dados de 100 GB pode levar cerca de 10 horas. Se houver vários bancos de dados a serem replicados por meio de vários links, a propagação será executada em paralelo e, quando combinada com uma velocidade de vínculo lenta, a fase de propagação inicial poderá demorar consideravelmente mais, especialmente se a propagação paralela de dados de todos os bancos de dados exceder a largura de banda do link disponível.
A fase inicial de semeadura não é resiliente a interrupções de rede e a operações de manutenção ou comutação por falha de instância. Se a conectividade bidirecional entre o SQL Server e a Instância Gerenciada de SQL for temporariamente perdida ou se o SQL Server ou a instância gerenciada de SQL for reiniciada ou falhar durante a fase inicial de propagação, a propagação será reiniciada.
Importante
A fase inicial de propagação pode levar dias com links de velocidade extremamente baixa ou congestionados. Nesse caso, a criação do link pode acabar. A criação do link é cancelada automaticamente após 6 dias.
Verificar o estado do link
Se você tiver problemas com um link, poderá usar o SSMS (SQL Server Management Studio), o Transact-SQL (T-SQL), o Azure PowerShell ou a CLI do Azure para obter informações sobre o estado atual do link.
Use o T-SQL para obter detalhes de status rápidos do estado do link e, em seguida, use o Azure PowerShell ou a CLI do Azure para obter informações abrangentes sobre o estado atual do link.
O monitoramento de link está disponível a partir do SSMS (SQL Server Management Studio) 21.0 (versão prévia).
Para verificar o estado do link no SSMS, siga estas etapas:
Conecte-se a uma réplica que hospeda o link.
No Pesquisador de Objetos, expanda Alta Disponibilidade AlwaysOn e, em seguida, expanda Grupos de Disponibilidade.
Clique com o botão direito do mouse no nome do link e selecione Propriedades para abrir a janela Propriedades do Link :
A janela Propriedades do Link exibe informações úteis sobre o link, como informações de réplica, estado do link e data de validade do certificado do ponto de extremidade:
O valor replicaState descreve o link atual. Se o estado também incluir Erro , ocorreu um erro durante a operação listada no estado. Por exemplo, LinkCreationError indica que ocorreu um erro ao criar o link.
Alguns valores possíveis de replicaState são:
- CreatingLink: propagação inicial
- LinkSynchronizing: A replicação de dados está em andamento
- LinkFailoverInProgress: o failover está em andamento
Para obter uma lista completa das propriedades de estado do link, examine o comando Grupos de Disponibilidade Distribuída – API REST GET .
Problemas com o link
Há duas categorias distintas de erros que você pode encontrar ao usar o link - erros ao tentar inicializar o link e erros ao tentar criar o link.
Erros ao inicializar um link sql-server-2016-database-engine-events-and-errors-1000-1999
O erro a seguir pode ocorrer ao inicializar um link (Estado do link: LinkInitError):
- Erro 41962: Operação anulada porque o link não foi iniciado em 5 minutos. Verifique a conectividade de rede e tente novamente.
- Erro 41973: O link não pode ser estabelecido porque o certificado de ponto de extremidade do SQL Server não foi importado corretamente para a Instância Gerenciada de SQL do Azure.
- Erro 41974: O link não pode ser estabelecido porque o certificado de ponto de extremidade da Instância Gerenciada de SQL não foi importado para o SQL Server corretamente.
- Erro 41976: o grupo de disponibilidade não está respondendo. Verifique os nomes e os parâmetros de configuração e tente novamente.
- Erro 41986: O link não pode ser estabelecido porque a conexão falhou ou a réplica secundária não responde. Verifique os nomes, os parâmetros de configuração e a conectividade de rede e tente novamente.
- Erro 47521: o link não pode ser estabelecido porque o servidor secundário não recebeu a solicitação. Verifique se o grupo de disponibilidade e os bancos de dados estão íntegros no servidor primário e tente novamente.
Erros ao criar um link
Os seguintes erros podem ocorrer ao criar um link (Estado do link: LinkCreationError):
Erro 41977: o banco de dados de destino não responde. Verifique os parâmetros de link e tente novamente.
Truncamento de log prematuro: se o log de transações for truncado antes da conclusão da propagação inicial, é provável que você veja um dos seguintes erros:
- Erro 1408: A cópia remota do banco de dados "%.*ls" não é recuperada o suficiente para habilitar o espelhamento de banco de dados ou para ingressá-lo no grupo de disponibilidade.
- Erro 1412: A cópia remota do banco de dados "%.*ls" não foi avançada para um ponto no tempo que está abarcado na cópia local do log do banco de dados.
Para resolver esse problema, você deve remover e recriar o link.
Para evitar esse problema, pause os backups do registro de transações no SQL Server para o banco de dados que está sendo replicado durante a fase inicial de propagação.
Estado inconsistente após failover forçado
Após um failover forçado, você pode encontrar um cenário de divisão cerebral em que ambas as réplicas estão na função primária, deixando o link em um estado inconsistente. Isso poderá acontecer se você fizer failover para a réplica secundária durante um desastre e, em seguida, a réplica primária voltar a ficar online.
Primeiro, confirme se você está em um cenário de cérebro dividido. É possível fazer isso usando o SSMS (SQL Server Management Studio) ou Transact-SQL (T-SQL).
Conecte-se ao SQL Server e à instância gerenciada de SQL no SSMS e, em seguida, no Pesquisador de Objetos, expanda Réplicas de disponibilidade no nó Grupo de disponibilidade em Alta Disponibilidade sempre ativada. Se duas réplicas diferentes estiverem listadas como (Primárias), você estará em um cenário de cérebro dividido.
Como alternativa, você pode executar o seguinte script T-SQL no SQL Server e na Instância Gerenciada de SQL para verificar a função das réplicas:
-- Execute on SQL Server and SQL Managed Instance
USE master
DECLARE @link_name varchar(max) = '<DAGName>'
SELECT
ag.name [Link name],
rs.role_desc [Link role]
FROM
sys.availability_groups ag
JOIN sys.dm_hadr_availability_replica_states rs
ON ag.group_id = rs.group_id
WHERE
rs.is_local = 1 AND ag.is_distributed = 1 AND ag.name = @link_name
GO
Se ambas as instâncias listam PRIMARY na coluna Função do link, você está em um cenário de divisão cerebral.
Para resolver o estado de cérebro dividido, primeiro faça um backup da réplica que era a primária original. Se a primária original era SQL Server, faça um backup da parte final do log. Se a primária original era Instância Gerenciada de SQL, faça um backup completo somente cópia. Após a conclusão do backup, defina o grupo de disponibilidade distribuído como a função secundária para a réplica que costumava ser a primária original, mas que agora será a nova secundária.
Por exemplo, no caso de um desastre real, supondo que você tenha forçado um failover da carga de trabalho do SQL Server para a Instância Gerenciada de SQL do Azure e pretenda continuar executando sua carga de trabalho na Instância Gerenciada de SQL, faça um backup da parte final do log no SQL Server e defina o grupo de disponibilidade distribuído para a função secundária no SQL Server, como no exemplo a seguir:
--Execute on SQL Server
USE master
ALTER AVAILABILITY GROUP [<DAGName>]
SET (ROLE = SECONDARY)
GO
Em seguida, execute um failover manual planejado da Instância Gerenciada de SQL para o SQL Server usando o link, como no exemplo a seguir:
--Execute on SQL Managed Instance
USE master
ALTER AVAILABILITY GROUP [<DAGName>] FAILOVER
GO
Certificado expirado
É possível que o certificado usado para o link expire. Se o certificado expirar, o link falhará. Para resolver esse problema, atualize o certificado.
Testar a conectividade de rede
A conectividade de rede bidirecional entre o SQL Server e a Instância Gerenciada de SQL é necessária para que o link funcione. Depois de abrir as portas no lado do SQL Server e configurar uma regra NSG no lado da Instância Gerenciada de SQL, teste a conectividade usando o SQL Server Management Studio (SSMS) ou o Transact-SQL.
Teste a rede criando um trabalho temporário do SQL Agent no SQL Server e na Instância Gerenciada de SQL para verificar a conexão entre as duas instâncias. Quando você usa o Verificador de Rede no SSMS, o trabalho é criado automaticamente para você e excluído após a conclusão do teste. Você precisará excluir manualmente o trabalho do SQL Agent se testar sua rede usando T-SQL.
Observação
No momento, não há suporte para a execução de scripts do PowerShell pelo SQL Server Agent no SQL Server em Linux, portanto, não é possível executar Test-NetConnection no trabalho do SQL Server Agent no SQL Server em Linux.
Para usar o SQL Agent para testar a conectividade de rede, você precisará cumprir os seguintes requisitos:
- O usuário que faz o teste deve ter permissões para criar um trabalho (seja como um sysadmin ou pertencendo à função SQLAgentOperator para
msdb) tanto para o SQL Server quanto para a Instância Gerenciada de SQL. - O serviço SQL Server Agent deve estar em execução no SQL Server. Como o agente está ativado por padrão na Instância Gerenciada de SQL, nenhuma ação adicional é necessária.
Considere o seguinte:
- Para evitar falsos negativos, todos os firewalls ao longo do caminho de rede devem permitir o tráfego de ICMP (Internet Control Message Protocol).
- Para evitar falsos positivos, todos os firewalls ao longo do caminho de rede devem permitir o tráfego no protocolo UCS proprietário do SQL Server. Bloquear o protocolo pode levar a um teste de conexão bem-sucedido, mas a conexão não é criada.
- As configurações avançadas de firewall com guardrails no nível de pacote no local precisam ser configuradas corretamente para permitir o tráfego entre o SQL Server e a Instância Gerenciada de SQL.
Para testar a conectividade de rede entre o SQL Server e a instância gerenciada do SQL no SSMS, execute estas etapas:
Conecte-se à instância que será a réplica primária no SSMS.
No Pesquisador de Objetos, expanda bancos de dados e clique com o botão direito do mouse no banco de dados que você pretende vincular ao secundário. Selecione Tarefas>Instância Gerenciada SQL do Azure link>Testar Conexão para abrir o assistente do Verificador de Rede:
Selecione Avançar na página Introdução do assistente Verificador de Rede.
Se todos os requisitos forem atendidos na página Pré-requisitos, selecione Avançar. Caso contrário, resolva os pré-requisitos não atendidos e selecione Executar novamente a validação.
Na página Logon, selecione Logon para se conectar à outra instância que será a réplica secundária. Selecione Próximo.
Verifique os detalhes na página Especificar Opções de Rede e forneça um endereço IP, se necessário. Selecione Próximo.
Na página Resumo, examine as ações executadas pelo assistente e selecione Concluir para testar a conexão entre as duas réplicas.
Examine a página Resultados para validar a conectividade existente entre as duas réplicas e selecione Fechar para concluir.
Cuidado
Continue com as próximas etapas somente se você validou a conectividade de rede entre os ambientes de origem e de destino. Caso contrário, solucione os problemas de conectividade de rede antes de continuar.
Conteúdo relacionado
Para obter mais informações sobre o recurso de link, examine os seguintes recursos: