Configurar eventos estendidos para grupos de disponibilidade
Aplica-se a: SQL Server
O SQL Server define eventos estendidos que são específicos para grupos de disponibilidade. Você pode monitorar esses eventos estendidos em uma sessão para ajudar no diagnóstico da causa raiz ao solucionar problemas de um grupo de disponibilidade. Você pode exibir os eventos estendidos do grupo de disponibilidade usando a seguinte consulta:
SELECT * FROM sys.dm_xe_objects WHERE name LIKE '%hadr%';
Sessão Alwayson_health
A sessão de eventos estendidos alwayson_health
é criada automaticamente quando você cria o grupo de disponibilidade e captura um subconjunto dos eventos relacionados do grupo de disponibilidade. Esta sessão é pré-configurada como uma ferramenta útil e conveniente para ajudá-lo a começar rapidamente ao solucionar problemas de um grupo de disponibilidade. O assistente Criar grupo de disponibilidade inicia automaticamente a sessão em cada réplica de disponibilidade participante configurada no assistente.
Importante
Se você não criou o grupo de disponibilidade usando o assistente Novo Grupo de Disponibilidade, a sessão alwayson_health
poderá não ser iniciada automaticamente. Se a sessão não for iniciada, não será possível capturar dados de evento quando ocorrer um problema inesperado. Você deverá iniciar a sessão manualmente e configurá-la para iniciar automaticamente por meio das propriedades da sessão.
Para ver a definição da sessão alwayson_health
:
No Pesquisador de Objetos, expanda Gerenciamento, Eventos Estendidos e, em seguida, Sessões.
Clique com o botão direito do mouse em Alwayson_health, aponte para sessão de Script como, aponte para Criar Para e selecione Janela do Editor de Nova Consulta.
Eventos estendidos para depuração
Além dos eventos estendidos cobertos pela sessão Alwayson_health, o SQL Server define um amplo conjunto de eventos de depuração para grupos de disponibilidade. Para aproveitar esses eventos estendidos adicionais em uma sessão, siga os procedimentos abaixo:
No Pesquisador de Objetos, expanda Gerenciamento, Eventos Estendidos e, em seguida, Sessões.
Clique com o botão direito do mouse em Sessões e selecione Nova Sessão. Ou clique com o botão direito do mouse em Alwayson_health e selecione Propriedades.
No painel Selecionar uma página, selecione Eventos.
Na biblioteca de eventos, na coluna Categoria, selecione alwayson e desmarque todas as outras categorias.
Na coluna Canal, selecione Depurar. Todos os eventos relacionados a grupos de disponibilidade que ainda não estiverem selecionados agora aparecerão na biblioteca de eventos.
Realce um evento na biblioteca de eventos e selecione o botão > para a sessão.
Ao terminar a sessão, selecione OK para fechá-la. Verifique se a sessão foi iniciada para capturar os eventos que você selecionou.
availability_replica_state_change
Ocorre quando o estado de uma réplica de disponibilidade foi alterado. A criação de um grupo de disponibilidade ou a junção de uma réplica de disponibilidade pode disparar esse evento. É útil para o diagnóstico de failover automático com falha. Ele também pode ser usado para rastrear as etapas de failover.
Informações de evento
Coluna | Descrição |
---|---|
Nome | availability_replica_state_change |
Categoria | always on |
Canal | Operacional |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
availability_group_id | guid | A ID do Grupo de Disponibilidade. |
availability_group_name | unicode_string | O nome do Grupo de Disponibilidade. |
availability_replica_id | guid | A ID da Réplica de Disponibilidade. |
previous_state | availability_replica_state | A função da réplica antes da alteração. Os valores possíveis são: Primary_Normal Secondary_Normal Resolving_Pending_Failover Resolving_Normal Primary_Pending Not_Available |
current_state | availability_replica_state | A função da réplica após a alteração. Os valores possíveis são: Primary_Normal Secondary_Normal Resolving_Pending_Failover Resolving_Normal Primary_Pending Not_Available |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT availability_replica_state_change
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
availability_group_lease_expired
Ocorre quando o cluster e o grupo de disponibilidade têm um problema de conectividade e o tempo de concessão expirou. Esse evento indica que a conectividade entre o grupo de disponibilidade e o cluster WSFC subjacente foi interrompida. Se o problema de conectividade ocorrer na réplica primária, o evento poderá causar um failover automático ou fazer com que o grupo de disponibilidade fique offline.
Informações de evento
Coluna | Descrição |
---|---|
Nome | availability_group_lease_expired |
Categoria | always on |
Canal | Operacional |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
availability_group_id | guid | A ID do grupo de disponibilidade. |
availability_group_name | unicode_string | O nome do grupo de disponibilidade. |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT availability_group_lease_expired
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
availability_replica_automatic_failover_validation
Ocorre quando o failover automático valida a preparação de uma réplica de disponibilidade como uma réplica primária e mostra se a réplica de disponibilidade de destino está pronta para ser a nova réplica primária. Por exemplo, a validação de failover retornará falso se nem todos os bancos de dados estiverem sincronizados ou não estiverem unidos. Esse evento foi projetado para fornecer um ponto de falha durante failovers. Essas informações são de interesse do administrador de banco de dados, especialmente em casos de failovers automáticos, pois um failover automático é uma operação autônoma. O administrador de banco de dados pode examinar o evento para ver por que um failover automático falhou.
Informações de evento
Nome | Descrição |
---|---|
availability_replica_automatic _failover_validation | |
Categoria | always on |
Canal | Analítico |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
availability_group_id | guid | A ID do grupo de disponibilidade. |
availability_group_name | unicode_string | O nome do grupo de disponibilidade. |
availability_replica_id | guid | A ID da réplica de disponibilidade. |
forced_quorum | validation_result_type | Se o valor for TRUE, o failover automático será invalidado nesta réplica de disponibilidade. TRUE FALSE |
joined_and_synchronized | validation_result_type | Se o valor for FALSE, o failover automático será invalidado nesta réplica de disponibilidade. TRUE FALSE |
previous_primary_or_automatic_failover_target | validation_result_type | Se o valor for FALSE, o failover automático será invalidado nesta réplica de disponibilidade. TRUE FALSE |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT availability_replica_automatic_failover_validation (
WHERE (
[forced_quorum] = (TRUE)
OR [joined_and_synchronized] = (FALSE)
OR [previous_primary_or_automatic_failover_target] = (TRUE)
)
) ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
error_reported (vários números de erro): para problemas de conexão ou transporte
Cada evento filtrado indica que um problema de conectividade ocorreu no transporte ou no ponto de extremidade de espelhamento de banco de dados do qual esse grupo de disponibilidade depende.
Coluna | Descrição |
---|---|
Nome | error_reported números a serem filtrados: 35201, 35202, 35206, 35204, 35207, 35217, 9642, 9666, 9691, 9692, 9693, 28034, 28036, 28080, 28091 e 33309 |
Categoria | erros |
Canal | Admin |
Números de erro a serem filtrados
Número do erro | Descrição |
---|---|
35201 | Ocorreu um tempo limite de conexão ao tentar estabelecer uma conexão com a réplica de disponibilidade '%ls'. |
35202 | Uma conexão com o grupo de disponibilidade '%ls' da réplica de disponibilidade '%ls' com a ID [%ls] para '%ls' com a ID [%ls] foi estabelecida com êxito. Essa mensagem é apenas informativa. Não é necessária nenhuma ação do usuário. |
35206 | Ocorreu um tempo limite de conexão em uma conexão estabelecida anteriormente com a réplica de disponibilidade '%ls'. |
35204 | A conexão entre as instâncias '%ls' e '%ls' foi desabilitada devido ao desligamento do ponto de extremidade. |
Tempo limite + conectado | |
35207 | A tentativa de conexão no grupo de disponibilidade ID '%ls' da ID de réplica '%ls' para a ID de réplica '%ls' falhou devido ao erro %d, à gravidade %d e o estado %d. gravidade %d estado %d. (isso pode não ter um bom uso de DBA. Verificar e remover posteriormente nesse caso) |
35217 | (A partir do SQL Server 2019 CU15 – 15.0.4198.2) – O pool de threads para os Grupos de Disponibilidade Always On não pôde iniciar um novo thread de trabalho porque não há threads de trabalho suficientes disponíveis. Isso pode degradar o desempenho dos Grupos de Disponibilidade Always On. Use a opção de configuração "max worker threads" para aumentar o número de threads permitidos. |
9642 | Erro em um ponto de extremidade de conexão de transporte do Service Broker/Espelhamento de banco de dados Erro: %i Estado: %i. (Função do ponto de extremidade próximo: %S_MSG, endereço do ponto de extremidade distante: '%.*hs') Erro: %i Estado: %i. (Função do ponto de extremidade próximo: %S_MSG, endereço do ponto de extremidade distante: '%.*hs') |
9666 | O ponto de extremidade %S_MSG está no estado desabilitado ou parado. |
9691 | O ponto de extremidade %S_MSG parou de escutar conexões. |
9692 | O ponto de extremidade %S_MSG não pode escutar na porta %d porque ela está sendo usada por outro processo. |
9693 | O ponto de extremidade %S_MSG não pode escutar conexões devido ao seguinte erro: '%.*ls'. |
28034 | Falha no handshake de conexão. O logon '%.*ls' não dispõe de permissão CONNECT no ponto de extremidade. Estado %d. |
28036 | Falha no handshake de conexão. O certificado usado por este ponto de extremidade não foi encontrado: %S_MSG. Use DBCC CHECKDB no banco de dados master para verificar a integridade dos metadados dos pontos de extremidade. Estado %d. |
28080 | Falha no handshake de conexão. O ponto de extremidade %S_MSG não está configurado. Estado %d. |
28091 | Não há suporte para o início do ponto de extremidade para %S_MSG sem autenticação. |
33309 | Não é possível iniciar o ponto de extremidade do cluster porque a configuração de ponto de extremidade padrão %S_MSG ainda não foi carregada. |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT sqlserver.error_reported (
WHERE (
--Connectivity Error Messages
[error_number] = (35201)
OR [error_number] = (35202)
OR [error_number] = (35204)
OR [error_number] = (35206)
OR [error_number] = (35207)
OR [error_number] = (35217)
OR [error_number] = (9642)
--OR [error_number]=(9666)
OR [error_number] = (9691)
OR [error_number] = (9692)
OR [error_number] = (9693)
OR [error_number] = (28034)
OR [error_number] = (28036)
OR [error_number] = (28080)
OR [error_number] = (28091)
OR [error_number] = (33309)
)
) ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
data_movement_suspend_resume
Ocorre quando a movimentação do banco de dados de uma réplica de banco de dados é suspensa ou retomada.
Informações de evento
Coluna | Descrição |
---|---|
Nome | data_movement_suspend_resume |
Categoria | Always On |
Canal | Operacional |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
availability_group_id | guid | A ID do grupo de disponibilidade. |
availability_group_name | unicode_string | O nome do grupo de disponibilidade, se disponível. |
availability_replica_id | guid | A ID da réplica de disponibilidade. |
database_replica_id | guid | A ID do banco de dados de disponibilidade. |
database_replica_name | unicode_string | O nome do banco de dados de disponibilidade. |
database_id | uint32 | A ID do banco de dados de disponibilidade. |
suspend_status | suspend_status_type | Os valores de status de suspensão. SUSPEND_NULL RESUMED SUSPENDED SUSPENDED_INVALID |
suspend_source | suspend_source_type | A origem da ação suspender ou retomar. |
suspend_reason | unicode_string | O motivo da suspensão capturado no gerenciador de réplica de banco de dados. |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT data_movement_suspend_resume (
WHERE (
[suspend_status] = (SUSPENDED)
OR [suspend_status] = (SUSPENDED_INVALID)
OR [suspend_status] = (SUSPEND_NULL)
)
) ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
alwayson_ddl_executed
Ocorre quando uma instrução DDL (linguagem de definição de dados) do grupo de disponibilidade está sendo executada, incluindo CREATE, ALTER ou DROP. O principal objetivo do evento é indicar um problema com uma ação do usuário em uma réplica de disponibilidade ou para indicar o ponto de partida de uma ação operacional, que é seguida por um problema de runtime, como um failover manual, um failover forçado, a movimentação de dados suspensa ou a movimentação de dados retomada.
Informações de evento
Coluna | Descrição |
---|---|
Nome | alwayson_ddl_execution |
Categoria | always on |
Canal | Analítico |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
availability_group_id | Guid | A ID do grupo de disponibilidade. |
availability_group_name | unicode_string | O nome do grupo de disponibilidade. |
ddl_action | alwayson_ddl_action | Indica o tipo de ação DDL: CREATE, ALTER ou DROP. |
ddl_phase | ddl_opcode | Indica a fase da operação DDL: BEGIN, COMMIT ou ROLLBACK. |
Instrução | unicode_string | O texto da instrução que foi executada. |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT alwayson_ddl_executed
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
availability_replica_manager_state
Ocorre quando o estado do gerenciador de réplica de disponibilidade é alterado. Esse evento indica a pulsação do gerenciador de réplica de disponibilidade. Quando o gerenciador de réplica de disponibilidade não está em estado íntegro, todas as réplicas de disponibilidade da instância do SQL Server ficarão inoperantes.
Informações de evento
Coluna | Descrição |
---|---|
Nome | availability_replica_manager_state_change |
Categoria | always on |
Canal | Operacional |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
current_state | manager_state | O estado atual do gerenciador de réplica de disponibilidade. Online Offline WaitingForClusterCommunication |
Definição de sessão Alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT availability_replica_manager_state (WHERE ([current_state] = (OFFLINE)))
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
error_reported (1480): alteração de função de réplica de banco de dados
Esse evento error_reported filtrado ocorre de forma assíncrona depois da alteração de uma função de réplica de disponibilidade. Ele indica qual banco de dados de disponibilidade falha ao alterar sua função esperada durante o processo de failover.
Informações de evento
Coluna | Descrição |
---|---|
Nome | error_reported Erro número 1480: o banco de dados REPLICATION_TYPE_MSG "DATABASE_NAME" está mudando de função, de "OLD_ROLE" para "NEW_ROLE" devido a REASON_MSG |
Categoria | erros |
Canal | Admin |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT sqlserver.error_reported (
WHERE (
--database replica role change message
OR [error_number] = (1480)
--database replica runtime error messages
OR [error_number] = (823)
OR [error_number] = (824)
OR [error_number] = (829)
)
) ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
sqlserver.sp_server_diagnostics_component_result
Captura dados de diagnóstico e informações de integridade sobre o SQL Server para detectar possíveis falhas. O procedimento é executado no modo de repetição e envia resultados periodicamente. Essa sessão de evento estendido está disponível a partir do SQL Server 2019 CU15 (15.0.4198.2).
Informações de evento
Nome | Descrição |
---|---|
Nome | sp_server_diagnostics_component_result |
Categoria | Servidor |
Canal | Depurar |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
componente | UInt8 | Nome do componente. |
state | UInt8 | Indica o status da integridade do componente. |
data | XML | Campo XML que contém informações extras sobre o componente. |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT sqlserver.sp_server_diagnostics_component_result (SET collect_data = (1) WHERE ([state] = (3)))
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
ucs.ucs_connection_setup
Despeje logs relacionados à rede ou à conectividade entre réplicas primárias e secundárias. Essa sessão de evento estendido está disponível a partir do SQL Server 2019 CU15 (15.0.4198.2).
Informações de evento
Nome | Descrição |
---|---|
Nome | ucs_connection_setup |
Categoria | Transport |
Canal | Depurar |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
setup_event | Int32 | Evento de configuração de conexão |
obj_address | Ponteiro | Endereço do ponto de extremidade de conexão |
endpoint_type | Int32 | Tipo de ponto de extremidade |
stream_status | Int32 | Status do fluxo de conexão |
error_number | UInt32 | Código de erro de conexão |
connection_id | GUID | ID da conexão |
error_message | UnicodeString | Mensagem de erro de conexão |
address | UnicodeString | Endereço de destino da conexão |
circuit_id | UnicodeString | ID do circuito de conexão |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT ucs.ucs_connection_setup
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO
sqlserver.hadr_trace_message
Redireciona a saída de alguns comandos DBCC e informações de log HADR para a sessão de evento estendido (semelhante ao sinalizador de rastreamento 3605). Essa sessão de evento estendido está disponível a partir do SQL Server 2019 CU15 (15.0.4198.2).
Informações de evento
Nome | Descrição |
---|---|
Nome | hadr_trace_message |
Categoria | Always On |
Canal | Depurar |
Campos de evento
Nome | Type_name | Descrição |
---|---|---|
hadr_message | unicode_string | Redireciona a saída de alguns comandos DBCC e informações de log HADR para a sessão de evento estendido (semelhante ao sinalizador de rastreamento 3605). |
Definição de sessão alwayson_health
CREATE EVENT SESSION [alwayson_health] ON SERVER
ADD EVENT sqlserver.hadr_trace_message
ADD TARGET package0.event_file (
SET filename = N'alwayson_health.xel',
max_file_size = (5),
max_rollover_files = (4),
metadatafile = N'alwayson_health.xem'
)
WITH (
MAX_MEMORY = 4096 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0 KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = ON
)
GO