Sintomas
Esta atualização inclui as seguintes melhorias para a capacidade de suporte do Tempo limite de concessão alwayson do Microsoft SQL Server:
-
A mensagem Tempo limite de concessão agora exibe e registra a hora atual e o tempo de renovação esperado.
-
Uma nova mensagem de erro foi adicionada para os trabalhadores de concessão que indica claramente o motivo do tempo limite de concessão.
-
Um novo evento estendido e um novo buffer de anel para trabalhadores de concessão foram adicionados. Isso indica claramente os estágios de concessão.
Resolução
O problema foi corrigido pela primeira vez nos seguintes Service Packs para SQL Server.
Para obter mais informações sobre SQL Server Service Pack 3 (SP3) 2012, confira bugs corrigidos no SQL Server Service Pack 3 de 2012.
Service Pack 2 para SQL Server para SQL Server 2014Sobre os pacotes de serviço para pacotes SQL Server Service são cumulativos. Cada novo service pack contém todas as correções que estão em pacotes de serviço anteriores, juntamente com quaisquer novas correções. Nossa recomendação é aplicar o pacote de serviços 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 pacote de serviços mais recente. Use a Tabela 1 no artigo a seguir para encontrar mais informações sobre o pacote de serviços mais recente e a atualização cumulativa mais recente.Como determinar o nível de versão, edição e atualização de SQL Server e seus componentes
Informações adicionais
Para fornecer informações adicionais, novas mensagens de erro foram adicionadas a SQL Server. A tabela a seguir lista e explica cada uma delas.
|
Erro |
Mensagem de erro |
Causa |
Ação corretiva |
|---|---|---|---|
|
19419 |
A renovação da concessão entre o grupo de disponibilidade '%.*ls' e o cluster de failover Windows Server falhou porque a concessão existente não é mais válida. |
O trabalhador de concessão do lado SQL Server não foi agendado a tempo de processar o sinal de evento do cluster. |
Verifique a utilização da CPU no servidor, pois SQL Server trabalhador de concessão parece estar passando fome. |
|
19420 |
O grupo de disponibilidade '%.*ls' é explicitamente solicitado a interromper a renovação da concessão. |
A renovação de concessão está parando como parte de colocar o grupo de disponibilidade offline. Isso é somente informativo. |
|
|
19421 |
A renovação da concessão entre o grupo de disponibilidade '%.*ls' e o cluster de failover Windows Server falhou porque a renovação não aconteceu dentro do intervalo de concessão. |
O auxiliar de concessão no lado do cluster não sinalizou o SQL Server trabalhador de concessão a tempo. |
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 '%.*ls' e o cluster de failover Windows Server falhou devido a um erro do Windows com código de erro ('%d'). |
O trabalhador de concessão do lado SQL Server não renovou a concessão por causa de um erro de janelas. |
Verifique o código de erro do Windows e tome a ação corretiva. |
|
19423 |
O contrato de concessão do grupo de disponibilidade '%.*ls' não é mais válido 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 excedente fornecido pela chamada online, a concessão já estava expirada. Isso pode ter acontecido devido a problemas de agendamento. |
Verifique a utilização da CPU no servidor, pois SQL Server trabalhador de concessão parece estar passando fome. |
|
19424 |
O trabalhador de concessão do grupo de disponibilidade '%.*ls' agora está dormindo o tempo de concessão excessivo (%u ms) fornecido durante online. Essa é apenas uma mensagem informativa. Nenhuma ação do usuário é necessária. |
Informativo. Tempo extra online atribuído ao início do 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 manutenção de threads no processo de SQL Server até que você retome o processo de SQL Server. Quando você retoma SQL Server, o seguinte é relatado no log de erros do SQL Server:
<Hora da Data> Erro do Servidor: 19419, Severidade: 16, Estado: 1. <Tempo de Data> Cluster de Failover Windows Server servidor não recebeu um sinal de evento de processo de SQL Server grupo de disponibilidade de hospedagem 'ag' no período de tempo limite de concessão. <Hora da Data> Erro do Servidor: 19407, Severidade: 16, Estado: 1. <Date Time> Server A concessão entre o grupo de disponibilidade 'ag' e o cluster de failover Windows Server expirou. Ocorreu um problema de conectividade entre a instância do SQL Server e o cluster de failover Windows Server. Para determinar se o grupo de disponibilidade está falhando corretamente, marcar o recurso do grupo de disponibilidade correspondente no Cluster de Failover Windows Server. <Hora da Data> Servidor AlwaysOn: o réplica local do grupo de disponibilidade 'ag' está ficando offline porque a concessão expirou ou a renovação de concessão falhou. Essa é apenas uma mensagem informativa. Nenhuma ação do usuário é necessária. <Date Time> Server O estado do réplica de disponibilidade local no grupo de disponibilidade 'ag' mudou de 'PRIMARY_NORMAL' para 'RESOLVING_NORMAL'. O estado réplica foi alterado devido a uma inicialização, um failover, um problema de comunicação ou um erro de cluster. Para obter mais informações, consulte o dashboard do grupo de disponibilidade, SQL Server log de erros, Windows Server console de gerenciamento de Cluster de Failover ou Windows Server log do Cluster de Failover.
O erro de 19419 é retornado porque 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) junto com o erro de 19419.Exemplo de erro 19424: a seguir está a mensagem de tempo de concessão excedente relatada pouco antes da transição do grupo de disponibilidade para a função PRIMARY:
<Date Time> Server O trabalhador de concessão do grupo de disponibilidade 'ag' agora está dormindo o tempo de concessão excessivo (164766 ms) fornecido durante online. Essa é apenas uma mensagem informativa. Nenhuma ação do usuário é necessária. <Date Time> Server O estado do réplica de disponibilidade local no grupo de disponibilidade 'ag' mudou de 'PRIMARY_PENDING' para 'PRIMARY_NORMAL'. O estado réplica foi alterado devido a uma inicialização, um failover, um problema de comunicação ou um erro de cluster. Para obter mais informações, consulte o dashboard do grupo de disponibilidade, SQL Server log de erros, Windows Server console de gerenciamento de Cluster de Failover ou Windows Server log do Cluster de Failover.
O availability_group_lease_expired e 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 as melhorias nestes XEvents:
|
XEvent |
Nova coluna |
Descrição |
|---|---|---|
|
availability_group_lease_expired |
current_time |
Hora em que a concessão expirou |
|
availability_group_lease_expired |
new_timeout |
Tempo limite, quando availability_group_lease_expired é gerado, current_time é maior que new_timeout |
|
availability_group_lease_expired |
Estado |
Estágios de concessão: confira Tabela estágios de concessão abaixo |
|
hadr_ag_lease_renewal |
Estado |
hadr_ag_lease_renewal |
|
hadr_ag_lease_renewal |
error_code |
Se o estado estiver HadrLeaseRenewal_FailedWithWindowsError, error_code será o código de erro do Windows associado à falha |
Estágios e definições deconcessão A tabela a seguir lista os possíveis estágios de concessão e explica suas funções:
|
Nome do estágio |
Descrição |
|---|---|
|
HadrLeaseRenewal_LeaseWorkerStarted |
Thread de trabalho de locação iniciado. |
|
HadrLeaseRenewal_StartedExcessLeaseSleep |
Iniciando o excesso de concessão. Estágios de concessão em excesso documentam o início do thread de concessão durante a fase online do grupo de disponibilidade. |
|
HadrLeaseRenewal_FailedExcessSleepInvalidOnlineLease |
Falharemos com o excesso de concessão se a concessão já estiver expirada. |
|
HadrLeaseRenewal_SkipExcessSleep |
Ignoraremos o excesso de concessão se a duração disponível para dormir for menor que o intervalo de concessão. Não há necessidade de passar pelo excesso de concessão apenas iniciar o processo de aperto de mão. |
|
HadrLeaseRenewal_ExcessSleepSucceeded |
O excesso de concessão foi bem-sucedido. |
|
HadrLeaseRenewal_RenewSucceeded |
Devemos ver isso a cada renovação. |
|
HadrLeaseRenewal_LeaseNotValid |
Equivalente ao erro: 19419 Windows Server Cluster de Failover não recebeu um sinal de evento de processo de SQL Server grupo de disponibilidade de hospedagem '%.*ls' no período de tempo limite de concessão. |
|
HadrLeaseRenewal_StopLeaseRenewal |
Você deve ver isso durante um evento de failover. |
|
HadrLeaseRenewal_LeaseExpired |
Equivalente ao erro: 19421 SQL Server grupo de disponibilidade de hospedagem '%.*ls' não recebeu um sinal de evento de processo do Cluster de Failover Windows Server no período de tempo limite de concessão. |
|
HadrLeaseRenewal_FailedWithWindowsError |
Falha na renovação de concessão devido a um erro do Windows. |
Para obter mais informações, confira Diagnóstico 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 ele funciona: SQL Server tempo limite de concessão alwayson.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".