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 da Concessão é agora apresentada e regista a hora atual e a hora de renovação esperada.
-
Foi adicionada uma nova mensagem de erro para os trabalhadores do contrato de arrendamento que indica claramente o motivo do Tempo Limite da Concessão.
-
Foi adicionado um novo evento alargado e uma nova memória intermédia para trabalhadores de arrendamento. Estes indicam claramente as fases de concessão.
Resolução
O problema foi corrigido pela primeira vez nos Service Packs seguintes para SQL Server.
Para obter mais informações sobre SQL Server Service Pack 3 (SP3) de 2012, veja erros corrigidos no SQL Server Service Pack 3 de 2012.
Service Pack 2 para SQL Server para SQL Server 2014Acerca dos Service packs para pacotes SQL Server Service são cumulativos. Cada novo service pack contém todas as correções que estão em service packs anteriores, juntamente com quaisquer correções novas. A nossa recomendação é aplicar o service pack mais recente e a atualização cumulativa mais recente para esse service pack. Não tem de instalar um service pack anterior antes de instalar o service pack mais recente. Utilize a Tabela 1 no artigo seguinte para encontrar mais informações sobre o service pack mais recente e a atualização cumulativa mais recente.Como determinar a versão, a edição e o nível de atualização do SQL Server e dos respetivos componentes
Mais Informações
Para fornecer informações adicionais, foram adicionadas novas mensagens de erro ao SQL Server. A tabela seguinte 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 Ativação Pós-falha do Windows Server falhou porque a concessão existente já não é válida. |
A função de trabalho de concessão do lado SQL Server não foi agendada a tempo para processar o sinal de evento do cluster. |
Verifique a utilização da CPU no servidor, uma vez que SQL Server trabalhador de concessão parece estar a morrer de fome. |
|
19420 |
É pedido explicitamente ao grupo de disponibilidade '%.*ls' que pare a renovação da concessão. |
A renovação da concessão está a parar como parte da colocação offline do grupo de disponibilidade. Isto é apenas informativo. |
|
|
19421 |
A renovação da concessão entre o grupo de disponibilidade '%.*ls' e o cluster de ativação pós-falha Windows Server falhou porque a renovação não ocorreu dentro do intervalo de concessão. |
O programa auxiliar de concessão no lado do cluster não sinalizou o SQL Server trabalho de concessão a tempo. |
Verifique o recurso do grupo de disponibilidade correspondente no cluster WSFC para ver se comunicou algum erro. |
|
19422 |
A renovação da concessão entre o grupo de disponibilidade '%.*ls' e o Cluster de Ativação Pós-falha do Windows Server falhou devido a um erro do Windows com o Código de erro ('%d'). |
A função de trabalho de concessão do SQL Server lado não renovou a concessão devido a um erro do Windows. |
Verifique o código de erro do Windows e tome a ação corretiva. |
|
19423 |
A concessão da concessão do grupo de disponibilidade "%.*ls" já não é válida para iniciar o processo de renovação da 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. Isto pode acontecer devido a problemas de agendamento. |
Verifique a utilização da CPU no servidor, uma vez que SQL Server trabalhador de concessão parece estar a morrer de fome. |
|
19424 |
A função de trabalho de concessão do grupo de disponibilidade '%.*ls' está agora a exceder o tempo de concessão em excesso (%u ms) fornecido durante a internet. Esta é apenas uma mensagem informativa. Não é necessária nenhuma ação do utilizador. |
Informativo. Tempo online extra atribuído ao início do thread de renovação da concessão e como parte da rotina online do grupo de disponibilidade. |
Exemplo do erro 19419: se utilizar um depurador para anexar a SQL Server, este interrompe qualquer manutenção de threads no processo de SQL Server até retomar o processo de SQL Server. Quando retoma SQL Server, é comunicado o seguinte no registo de erros SQL Server:
<Data e Hora> Erro do Servidor: 19419, Gravidade: 16, Estado: 1. <Data e Hora> Cluster de Ativação Pós-falha do Servidor Windows Server não recebeu um sinal de evento de processo de SQL Server que aloja o grupo de disponibilidade "ag" dentro do período de tempo limite da concessão. <Data e Hora> Erro do Servidor: 19407, Gravidade: 16, Estado: 1. <Data e Hora> Server A concessão entre o grupo de disponibilidade "ag" e o Cluster de Ativação Pós-falha Windows Server expirou. Ocorreu um problema de conectividade entre a instância do SQL Server e o Cluster de Ativação Pós-falha Windows Server. Para determinar se o grupo de disponibilidade está a efetuar a ativação pós-falha corretamente, verifique o recurso do grupo de disponibilidade correspondente no Cluster de Ativação Pós-falha Windows Server. <Data e Hora> Servidor AlwaysOn: a réplica local do grupo de disponibilidade "ag" está a ficar offline porque a concessão expirou ou a renovação da concessão falhou. Esta é apenas uma mensagem informativa. Não é necessária nenhuma ação do utilizador. <Data e Hora> Server 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 foi alterado devido a um arranque, uma ativação pós-falha, um problema de comunicação ou um erro de cluster. Para obter mais informações, veja o dashboard do grupo de disponibilidade, SQL Server registo de erros, Windows Server consola de gestão do Cluster de Ativação Pós-falha ou Windows Server registo do Cluster de Ativação Pós-falha.
O erro 19419 é devolvido porque SQL Server não respondeu ao serviço de cluster. Também pode receber uma mensagem de erro de tempo limite de concessão (19407), juntamente com o erro 19419.Exemplo do erro 19424: segue-se a mensagem de tempo de concessão em excesso que é reportada imediatamente antes da transição do grupo de disponibilidade para a função PRIMÁRIA:
<Date Time> Server A função de trabalho de concessão do grupo de disponibilidade "ag" está agora a exceder o tempo de concessão (164766 ms) fornecido durante a internet. Esta é apenas uma mensagem informativa. Não é necessária nenhuma ação do utilizador. <Data e Hora> Server 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 foi alterado devido a um arranque, uma ativação pós-falha, um problema de comunicação ou um erro de cluster. Para obter mais informações, veja o dashboard do grupo de disponibilidade, SQL Server registo de erros, Windows Server consola de gestão do Cluster de Ativação Pós-falha ou Windows Server registo do Cluster de Ativação Pós-falha.
Os availability_group_lease_expired e hadr_ag_lease_renewal XEvents foram melhorados, com a adição de pontos de dados que fornecem mais informações sobre a condição da concessão. A tabela seguinte descreve as melhorias a estes 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 excedido, quando availability_group_lease_expired é aumentado, current_time é maior do que new_timeout |
|
availability_group_lease_expired |
estado |
Fases de concessão: veja a tabela Fases de Concessão abaixo |
|
hadr_ag_lease_renewal |
estado |
hadr_ag_lease_renewal |
|
hadr_ag_lease_renewal |
error_code |
Se o estado for HadrLeaseRenewal_FailedWithWindowsError, error_code é o código de erro do Windows associado à falha |
Fases e definiçõesde concessão A tabela seguinte lista as fases de concessão possíveis e explica as respetivas funções:
|
Nome da fase |
Descrição |
|---|---|
|
HadrLeaseRenewal_LeaseWorkerStarted |
Thread de trabalho de concessão iniciado. |
|
HadrLeaseRenewal_StartedExcessLeaseSleep |
A iniciar o excesso de concessão. As fases de concessão em excesso documentam o início do thread de concessão durante a fase online do grupo de disponibilidade. |
|
HadrLeaseRenewal_FailedExcessSleepInvalidOnlineLease |
Falhamos o excesso de concessão se a concessão já tiver expirado. |
|
HadrLeaseRenewal_SkipExcessSleep |
Ignoramos o excesso de concessão se a duração disponível para suspensão for inferior ao 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 isto a cada renovação. |
|
HadrLeaseRenewal_LeaseNotValid |
Equivalente ao erro: 19419 Windows Server Cluster de Ativação Pós-falha não recebeu um sinal de evento de processo de SQL Server que aloja o grupo de disponibilidade "%.*ls" dentro do período de tempo limite da concessão. |
|
HadrLeaseRenewal_StopLeaseRenewal |
Deverá ver isto durante um evento de ativação pós-falha. |
|
HadrLeaseRenewal_LeaseExpired |
Equivalente ao erro: 19421 SQL Server que aloja o grupo de disponibilidade '%.*ls' não recebeu um sinal de evento de processo do Cluster de Ativação Pós-falha Windows Server dentro do período de tempo limite da concessão. |
|
HadrLeaseRenewal_FailedWithWindowsError |
A renovação da concessão falhou devido a um erro do Windows. |
Para obter mais informações, veja Diagnósticos de Tempo Limite de Concessão do Grupo de Disponibilidade AlwaysOn Melhorado.Para obter mais informações sobre o Tempo Limite da Concessão, veja Como Funciona: SQL Server Tempo Limite de Concessão AlwaysOn.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".