Sintomas
Esta atualização inclui os seguintes aprimoramentos para a capacidade de suporte ao tempo limite de concessão do Microsoft SQL Server AlwaysOn:
-
A mensagem de tempo limite de concessão agora é exibida e registra a hora atual e o tempo de renovação esperado.
-
Uma nova mensagem de erro foi adicionada para trabalhadores da concessão que indicam claramente o motivo do tempo limite de concessão.
-
Um novo evento estendido e um novo buffer de anel para trabalhadores da concessão foram adicionados. Elas indicam claramente os estágios da concessão.
Resolução
O problema foi corrigido primeiro nos seguintes Service Packs do SQL Server.
Para obter mais informações sobre o SQL Server 2012 Service Pack 3 (SP3), consulte erros corrigidos no SQL server 2012 Service Pack 3.
Service Pack 2 para SQL Server para SQL Server 2014Sobre Service Packs para SQL ServerService packs são cumulativos. Cada novo Service Pack contém todas as correções que estão em Service Packs anteriores, juntamente com qualquer nova correção. Nossa recomendação é aplicar o Service Pack mais recente e a atualização cumulativa mais recente para esse Service Pack. Você não precisa instalar um Service Pack anterior antes de instalar o Service Pack mais recente. Use a tabela 1 no artigo a seguir para encontrar mais informações sobre o Service Pack mais recente e a atualização cumulativa mais recente.Como determinar o nível de versão, edição e atualização do SQL Server e seus componentes
Informações adicionais
Para fornecer informações adicionais, novas mensagens de erro foram adicionadas ao SQL Server. A tabela a seguir lista e explica cada um deles.
Erro |
Mensagem de erro |
Causa |
Ação corretiva |
---|---|---|---|
19419 |
A renovação da concessão entre o grupo de disponibilidade ' %1! ' e o cluster de failover do Windows Server falhou porque a concessão existente não é mais válida. |
O trabalhador da concessão no lado do SQL Server não foi agendado no momento para processar o sinal de evento do cluster. |
Verifique se a utilização da CPU no servidor como o trabalhador de concessão do SQL Server parece estar em falta. |
19420 |
O grupo de disponibilidade ' %1! ' é explicitamente solicitado a interromper a renovação da concessão. |
A renovação da concessão é interrompida como parte de colocar o grupo de disponibilidade offline. Isso é somente informativo. |
|
19421 |
A renovação da concessão entre o grupo de disponibilidade ' %1! ' e o cluster de failover do Windows Server falhou porque a renovação não aconteceu dentro do intervalo de concessão. |
O auxiliar da concessão no lado do cluster não sinalizau o trabalhador de concessão do SQL Server no momento. |
Verifique o recurso de grupo de disponibilidade correspondente no Cluster WSFC para ver se ele relatou algum erro. |
19422 |
A renovação da concessão entre o grupo de disponibilidade ' %1! ' e o cluster de failover do Windows Server falhou devido a um erro do Windows com código de erro (' %1! '). |
O trabalhador da concessão no lado do SQL Server falhou ao renovar a concessão devido a um erro do Windows. |
Verifique o código de erro do Windows e execute a ação corretiva. |
19423 |
A concessão do grupo de disponibilidade ' %1! ' não é mais válida para iniciar o processo de renovação de concessão. |
Quando o trabalhador da concessão começou a processar o tempo de concessão em excesso fornecido pela chamada online, a concessão já tinha expirado. Isso pode acontecer devido a problemas de agendamento. |
Verifique se a utilização da CPU no servidor como o trabalhador de concessão do SQL Server parece estar em falta. |
19424 |
O trabalhador da concessão do grupo de disponibilidade ' %1! ' agora está dormindo o tempo de concessão em excesso (% u MS) fornecido durante online. Esta é uma mensagem informativa apenas. Não é necessária nenhuma ação do usuário. |
Informativos. Tempo online adicional alocado para iniciar o thread de renovação de concessão e como parte da rotina online do grupo de disponibilidade. |
Exemplo de erro 19419: Se você usar um depurador para anexar ao SQL Server, ele interromperá qualquer serviço de threads no processo do SQL Server até que você retome o processo do SQL Server. Quando você reinicia o SQL Server, o seguinte é reportado no log de erros do SQL Server:
<data e hora> Erro de servidor: 19419, severidade: 16, estado: 1. <data e hora> O cluster de failover do servidor do Windows Server não recebeu um sinal de evento de processo do grupo de disponibilidade de hospedagem do SQL Server ' AG ' dentro do período de tempo limite da concessão. <data e hora> Erro de servidor: 19407, severidade: 16, estado: 1. <data e hora> Servidor a concessão entre o grupo de disponibilidade ' AG ' e o cluster de failover do Windows Server expirou. Ocorreu um problema de conectividade entre a instância do SQL Server e do cluster de failover do Windows Server. Para determinar se o grupo de disponibilidade está falhando corretamente, verifique o recurso de grupo de disponibilidade correspondente no cluster de failover do Windows Server. <data e hora> Server AlwaysOn: a réplica local do grupo de disponibilidade ' AG ' ficará offline porque a concessão expirou ou a renovação de concessão falhou. Esta é uma mensagem informativa apenas. Não é necessária nenhuma ação do usuário. <data e hora> Servidor o estado da réplica de disponibilidade local no grupo de disponibilidade ' AG ' mudou de ' PRIMARY_NORMAL ' para ' RESOLVING_NORMAL '. O estado da réplica mudou devido a uma inicialização, um failover, um problema de comunicação ou um erro de cluster. Para obter mais informações, consulte o painel do grupo de disponibilidade, log de erro do SQL Server, console de gerenciamento de cluster de failover do Windows Server ou log de cluster de failover do Windows Server.
O erro 19419 é retornado porque o SQL Server não respondeu ao serviço de cluster. Você também pode receber uma mensagem de erro de tempo limite de concessão (19407) juntamente com o erro do 19419.Exemplo de erro 19424: a seguir está a mensagem de tempo de concessão em excesso que é reportada antes de o grupo de disponibilidade mudar para a função primária:
<data e hora> Servidor o trabalhador da concessão do grupo de disponibilidade ' AG ' agora está dormindo o tempo de concessão em excesso (164766 MS) fornecido durante a online. Esta é uma mensagem informativa apenas. Não é necessária nenhuma ação do usuário. <data e hora> Servidor o estado da réplica de disponibilidade local no grupo de disponibilidade ' AG ' mudou de ' PRIMARY_PENDING ' para ' PRIMARY_NORMAL '. O estado da réplica mudou devido a uma inicialização, um failover, um problema de comunicação ou um erro de cluster. Para obter mais informações, consulte o painel do grupo de disponibilidade, log de erro do SQL Server, console de gerenciamento de cluster de failover do Windows Server ou log de cluster de failover do Windows Server.
O availability_group_lease_expired e o hadr_ag_lease_renewal XEvents foram aprimorados, com a adição de pontos de dados que fornecem mais informações sobre a condição da concessão. A tabela a seguir descreve os aprimoramentos para estes XEvents:
XEvent |
Nova coluna |
Descrição |
---|---|---|
availability_group_lease_expired |
current_time |
Tempo em que a concessão venceu |
availability_group_lease_expired |
new_timeout |
Tempo limite, quando availability_group_lease_expired é gerado, current_time é maior do que new_timeout |
availability_group_lease_expired |
Estado |
Estágios da concessão: Veja a tabela de estágios de leasing abaixo |
hadr_ag_lease_renewal |
Estado |
hadr_ag_lease_renewal |
hadr_ag_lease_renewal |
error_code |
Se o estado for HadrLeaseRenewal_FailedWithWindowsError então error_code será o código de erro do Windows associado à falha |
Estágios e definições da concessãoA tabela a seguir lista os estágios de leasing possíveis e explica suas funções:
Nome do estágio |
Descrição |
---|---|
HadrLeaseRenewal_LeaseWorkerStarted |
Thread de trabalho da concessão iniciado. |
HadrLeaseRenewal_StartedExcessLeaseSleep |
Iniciando a concessão em excesso. Estágios de leasing em excesso documentam o início do thread de concessão durante a fase online do grupo de disponibilidade. |
HadrLeaseRenewal_FailedExcessSleepInvalidOnlineLease |
Falha na concessão em excesso se a concessão já tiver expirado. |
HadrLeaseRenewal_SkipExcessSleep |
Ignoramos a concessão em excesso se a duração disponível para dormir for menor do que o intervalo de concessão. Não é necessário passar pela concessão em excesso basta começar o processo de agitar a mão. |
HadrLeaseRenewal_ExcessSleepSucceeded |
Êxito na concessão em excesso. |
HadrLeaseRenewal_RenewSucceeded |
Devemos ver isso em cada renovação. |
HadrLeaseRenewal_LeaseNotValid |
Equivalente ao erro: o cluster de failover do servidor 19419Windows não recebeu um sinal de evento de processo do grupo de disponibilidade de hospedagem do SQL Server ' %1! ' dentro do período de tempo limite de concessão. |
HadrLeaseRenewal_StopLeaseRenewal |
Isso é exibido durante um evento de failover. |
HadrLeaseRenewal_LeaseExpired |
Equivalente ao erro: o grupo de disponibilidade de hospedagem do servidor 19421SQL '%. * ls ' não recebeu um sinal de evento de processo do cluster de failover do Windows Server dentro do período de tempo limite de concessão. |
HadrLeaseRenewal_FailedWithWindowsError |
Falha na renovação da concessão devido a um erro do Windows. |
Para obter mais informações, consulte diagnósticos de tempo limite de concessão do grupo de disponibilidade AlwaysOn aprimorado. Para obter mais informações sobre o tempo limite de concessão, consulte como funciona: tempo limite de concessão do SQL Server AlwaysOn.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".