Konfigurera utökade händelser för tillgänglighetsgrupper

Gäller för:SQL Server

SQL Server definierar utökade händelser som är specifika för tillgänglighetsgrupper. Övervaka dessa Utökade händelser i en session för att underlätta grundorsaksanalys vid felsökning av en tillgänglighetsgrupp. Använd följande fråga för att se tillgänglighetsgruppen Utökade händelser:

SELECT *
FROM sys.dm_xe_objects
WHERE name LIKE '%hadr%';

alwayson_health-sessionen

Sessionen alwayson_health Extended Events skapas automatiskt när du skapar tillgänglighetsgruppen, och den fångar en delmängd av tillgänglighetsgruppens relaterade händelser. Denna session är förkonfigurerad som ett användbart och bekvämt verktyg för att hjälpa dig komma igång snabbt samtidigt som du felsöker en tillgänglighetsgrupp. Guiden Skapa tillgänglighetsgrupp startar automatiskt sessionen på varje deltagande tillgänglighetsreplik som konfigurerats i guiden.

Important

Om du inte skapar tillgänglighetsgruppen med hjälp av New Availability Group Wizard kanske sessionen alwayson_health inte startar automatiskt. Om sessionen inte startas kan den inte fånga händelsedata när ett oväntat problem uppstår. Du bör manuellt starta sessionen och konfigurera sessionen att starta automatiskt genom att konfigurera sessionens egenskaper.

För att se definitionen av sessionen alwayson_health :

  1. I Object Explorer, expandera Management, Extended Events och sedan Sessions.

  2. Högerklicka på Alwayson_health, peka på Skriptsession som, peka på SKAPA till och välj sedan Nytt frågeredigerarfönster.

Utökade händelser för felsökning

Utöver de utökade händelser som Alwayson_health-sessionen täcker definierar SQL Server en omfattande uppsättning felsökningshändelser för tillgänglighetsgrupper. För att använda dessa ytterligare Extended Events i en session, följ följande steg:

  1. I Object Explorer, expandera Management, Extended Events och sedan Sessions.

  2. Högerklicka på Sessioner och välj Ny session. Eller högerklicka Alwayson_health och välj Egenskaper.

  3. I panelen Välj en sida , välj Händelser.

  4. I händelsebiblioteket, i kolumnen Kategori, välj alwayson och rensa alla andra kategorier.

  5. I kolumnen Kanal , välj Debug. Händelsebiblioteket visar nu alla tillgänglighetsgruppsrelaterade händelser som inte redan är valda.

  6. Markera en händelse i händelsebiblioteket och välj > sedan knappen för att välja den för sessionen.

  7. När du är klar med sessionen, välj OK för att stänga den. Se till att sessionen startas så att den fångar de händelser du valt.

availability_replica_state_change

Denna händelse inträffar när tillståndet för en tillgänglighetsreplika ändras. Att skapa en tillgänglighetsgrupp eller ansluta till en tillgänglighetsreplika kan utlösa denna händelse. Det är användbart för att diagnostisera misslyckad automatisk failover och kan också hjälpa till att spåra failover-stegen.

Händelseinformation

Column Description
Namn availability_replica_state_change
Category Alltid på
Channel Operational

Händelsefält

Namn type_name Description
availability_group_id guid ID:t för tillgänglighetsgruppen.
availability_group_name unicode_string Namnet på Tillgänglighetsgruppen.
availability_replica_id guid ID för tillgänglighetsreplikan.
previous_state availability_replica_state Replikans roll före förändringen.

Möjliga värden är:

Primär_Normal

Secondary_Normal

Löser_Väntande_Redundansväxling

Resolving_Normal

Primär_Väntande

Not_Available
current_state availability_replica_state Replikans roll efter förändringen.

Möjliga värden är:

Primär_Normal

Secondary_Normal

Löser_väntande_redundansväxling

Löser_Normal

Primär_Väntande

Not_Available

Definition av session i 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

arrendet för tillgänglighetsgruppen har upphört att gälla

Denna händelse inträffar när klustret och tillgänglighetsgruppen har ett anslutningsproblem och leasingavtalet löper ut. Det indikerar att kopplingen mellan tillgänglighetsgruppen och det underliggande WSFC-klustret är bruten. Om anslutningsproblemet uppstår på primärrepliken kan händelsen orsaka en automatisk failover eller att tillgänglighetsgruppen går offline.

Händelseinformation

Column Description
Namn availability_group_lease_expired
Category Alltid på
Channel Operational

Händelsefält

Namn type_name Description
availability_group_id guid ID för tillgänglighetsgruppen.
availability_group_name unicode_string Namnet på tillgänglighetsgruppen.

Definition av session i 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

tillgänglighet_replik_automatisk_redundansväxling_validering

Denna händelse inträffar när automatisk failover validerar att en tillgänglighetsreplika är redo att fungera som primär replika. Den anger om måltillgänglighetsrepliken är redo att bli den nya primära repliken. Till exempel ger failovervalideringen falsk när inte alla databaser är synkroniserade eller sammankopplade. Denna händelse utgör en felpunkt under failovers. Databasadministratören är särskilt intresserad av denna information för automatiska failovers eftersom en automatisk failover är en obevakad operation. Databasadministratören kan granska händelsen för att se varför en automatisk failover misslyckades.

Händelseinformation

Namn Description
Namn availability_replica_automatic_failover_validation
Category Alltid på
Channel Analytic

Händelsefält

Namn type_name Description
availability_group_id guid ID för tillgänglighetsgruppen.
availability_group_name unicode_string Namnet på tillgänglighetsgruppen.
availability_replica_id guid ID för tillgänglighetsreplika.
forced_quorum validation_result_type Om värdet är TRUE blir den automatiska failovern ogiltig på denna tillgänglighetsreplik.

SANT

Falskt
joined_and_synchronized validation_result_type Om värdet är FALSE, ogiltigförklaras den automatiska failovern på denna tillgänglighetsreplik.

SANT

Falskt
previous_primary_or_automatic_failover_target validation_result_type Om värdet är FALSE, ogiltigförklaras den automatiska failovern på denna tillgänglighetsreplik.

SANT

Falskt

Definition av session i 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 (flera felnummer): Vid överförings- eller anslutningsproblem

Varje filtrerad händelse indikerar att ett anslutningsproblem uppstod i transport- eller databasspegeländpunkten som tillgänglighetsgruppen är beroende av.

Column Description
Namn error_reported

tal att filtrera: 35201, 35202, 35206, 35204, 35207, 35217, 9642, 9666, 9691, 9692, 9693, 28034, 28036, 28080, 28091, 33309
Category Felaktigheter
Channel Admin

Felnummer att filtrera på

Felnummer Description
9642 Ett fel uppstod i en tjänstkoordinator/databasspeglingsanslutningsslutpunkt, Fel: %i, Tillstånd: %i. (Nära slutpunktsroll: %S_MSG, fjärranslutpunktsadress: "%.*hs")
9666 Slutpunkten %S_MSG är inaktiverad eller stoppad.
9691 Den %S_MSG slutpunkten har slutat att ta emot anslutningar.
9692 %S_MSG slutpunkt kan inte lyssna på port %d då den används av en annan process.
9693 Den %S_MSG ändpunkten kan inte ta emot anslutningar på grund av följande fel: "%.*ls".
28034 Anslutningshandskakningen misslyckades. Inloggningen%.*ls har inte CONNECT-behörighet på slutpunkten. Tillstånd %d.
28036 Anslutningshandskakningen misslyckades. Det gick inte att hitta certifikatet som användes av den här slutpunkten: %S_MSG. Använd DBCC CHECKDB i huvuddatabasen för att verifiera metadataintegriteten för slutpunkterna. Tillstånd %d.
28080 Anslutningshandskakningen misslyckades. Den %S_MSG slutpunkten är inte konfigurerad. Tillstånd %d.
28091 Startslutpunkten för %S_MSG utan autentisering stöds inte.
33309 Det går inte att starta klusterslutpunkten eftersom standardkonfigurationen för %S_MSG slutpunkt inte har lästs in ännu.
35201 En tidsgräns för anslutningen inträffade vid försök att etablera en anslutning till tillgänglighetsrepliken '%ls' med ID [%ls]. Det finns antingen ett nätverk eller brandväggsproblem, eller så är slutpunktsadressen för repliken inte databasspeglingsslutpunkten för värdserverinstansen.
35202 En anslutning för tillgänglighetsgruppen '%ls' från tillgänglighetsrepliken '%ls' med ID [%ls] till '%ls' med ID [%ls] har etablerats. Det här är bara ett informationsmeddelande. Användaren behöver inte göra någonting.
35204 Anslutningen mellan serverinstanserna "%ls" med ID [%ls] och "%ls" med ID [%ls] har inaktiverats eftersom databasspeglingsslutpunkten antingen inaktiverades eller stoppades. Starta om slutpunkten med hjälp av Transact-SQL-instruktionen ALTER ENDPOINT med STATE = STARTED.
35206 En tidsgräns för anslutning har inträffat på en tidigare upprättad anslutning till tillgänglighetsrepliken "%ls" med ID [%ls]. Antingen finns det ett nätverks- eller brandväggsproblem, eller så har tillgänglighetsreplikan gått över till lösningsrollen.
35207 Anslutningsförsök på tillgänglighetsgrupps-ID%lsfrån replik-ID%lstill replik-ID%lsmisslyckades på grund av felet %d, allvarlighetsgraden %d, tillståndet %d.

Obs!: Det här felet kanske inte är särskilt användbart för en DBA. Kontrollera och ta bort senare i så fall.
35217 Trådpoolen för AlwaysOn-tillgänglighetsgrupper kunde inte starta en ny arbetstråd eftersom det inte finns tillräckligt med tillgängliga arbetstrådar. Detta kan försämra prestanda för AlwaysOn-tillgänglighetsgrupper. Använd konfigurationsalternativet "max worker threads" för att öka antalet tillåtna trådar.

Gäller för: SQL Server 2019 CU 15 och senare versioner.

Definition av session i 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

pausa/återuppta dataflytt

Denna händelse inträffar när databasrörelsen för en databasreplika avbryts eller återupptas.

Händelseinformation

Column Description
Namn dataflytt_pausa_återuppta
Category Alltid på
Channel Operational

Händelsefält

Namn type_name Description
availability_group_id guid ID för tillgänglighetsgruppen.
availability_group_name unicode_string Namnet på tillgänglighetsgruppen, om tillgänglig.
availability_replica_id guid ID för tillgänglighetsreplika.
database_replica_id guid ID:t för tillgänglighetsdatabasen.
database_replica_name unicode_string Namnet på tillgänglighetsdatabasen.
database_id uint32 ID:t för tillgänglighetsdatabasen.
suspend_status suspend_status_type Värdena för suspenderingsstatus.

SUSPEND_NULL

Återupptagen

SUSPENDED

SUSPENDED_INVALID
suspend_source suspend_source_type Källan till paus- eller återupptagningsåtgärden.
suspend_reason unicode_string Orsaken till pausningen registreras i hanteraren för databasrepliker.

Definition av session i 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

Denna händelse inträffar när en DDL-instruktion för en tillgänglighetsgrupp börjar köras, till exempel CREATE, ALTER eller DROP. Händelsen indikerar främst ett problem med en användaråtgärd på en tillgänglighetsreplika, eller markerar startpunkten för en operativ åtgärd. Denna åtgärd följs av ett problem under körning, till exempel en manuell redundansväxling, en tvingad redundansväxling, pausad dataförflyttning eller återupptagen dataförflyttning.

Händelseinformation

Column Description
Namn alwayson_ddl_execution
Category Alltid på
Channel Analytic

Händelsefält

Namn type_name Description
availability_group_id guid ID för tillgänglighetsgruppen.
availability_group_name unicode_string Namnet på tillgänglighetsgruppen.
ddl_action alwayson_ddl_action Anger typen av DDL-aktion: CREATE, ALTER, eller DROP.
ddl_phase ddl_opcode Anger fasen för DDL-operationen: BEGIN, COMMIT, eller ROLLBACK.
Statement unicode_string Texten i uttalandet som utfördes.

Definition av session i 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

tillstånd för hanteraren för tillgänglighetsrepliker

Denna händelse inträffar när tillståndet för tillgänglighetsreplikahanteraren ändras. Den indikerar hjärtslaget för tillgänglighetsreplikahanteraren. När tillgänglighetsreplikahanteraren inte är i ett hälsosamt tillstånd går alla tillgänglighetsrepliker i SQL Server-instansen ner.

Händelseinformation

Column Description
Namn availability_replica_manager_state_change
Category Alltid på
Channel Operational

Händelsefält

Namn type_name Description
current_state manager_state Det aktuella tillståndet för tillgänglighetsreplikahanteraren.

Online

Offline

Väntar på klusterkommunikation

Definition av session i 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): Ändring av databasreplikans roll

Denna filtrerade error_reported-händelse inträffar asynkront efter en rolländring för en tillgänglighetsreplika. Den anger vilken tillgänglighetsdatabas som misslyckas med att ändra sin förväntade roll under failover-processen.

Händelseinformation

Column Description
Namn error_reported

Error Number 1480: The REPLICATION_TYPE_MSG database "DATABASE_NAME" is changing roles from "OLD_ROLE" to "NEW_ROLE" due to REASON_MSG
Category Felaktigheter
Channel Admin

Definition av session i 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

Samlar in diagnostikdata och hälsoinformation om SQL Server för att identifiera potentiella fel. Proceduren körs i upprepat läge och skickar resultat med jämna mellanrum. Denna utökade händelsesession är tillgänglig från och med SQL Server 2019 CU15 (15.0.4198.2).

Händelseinformation

Namn Description
Namn sp_server_diagnostics_component_result
Category Server
Channel Debug

Händelsefält

Namn type_name Description
component uint8 Komponentnamn.
state uint8 Anger komponentens hälsostatus.
data xml XML-fält som innehåller extra information om komponenten.

Definition av session i 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

Dumpar anslutning eller nätverksrelaterade loggar mellan primära och sekundära repliker. Denna utökade händelsesession är tillgänglig från och med SQL Server 2019 CU15 (15.0.4198.2).

Händelseinformation

Namn Description
Namn ucs_connection_setup
Category Transport
Channel Debug

Händelsefält

Namn type_name Description
setup_event int32 Anslutningsuppställningshändelse
obj_address pointer Anslutningsändpunktsadress
endpoint_type int32 Typ av slutpunkt
stream_status int32 Anslutningsströmsstatus
error_number uint32 Anslutningsfelkod
connection_id guid Anslutnings-ID
error_message unicode_string Felmeddelande om anslutning
address unicode_string Anslutningsmåladress
circuit_id unicode_string krets-ID för anslutning

Definition av session i 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

Omdirigerar utdata från vissa DBCC-kommandon och HADR-logginformation till den utökade händelsesessionen (liknande trace flag 3605). Denna utökade händelsesession är tillgänglig från och med SQL Server 2019 CU15 (15.0.4198.2).

Händelseinformation

Namn Description
Namn hadr_trace_message
Category Alltid på
Channel Debug

Händelsefält

Namn type_name Description
hadr_message unicode_string Omdirigerar utdata från vissa DBCC-kommandon och HADR-logginformation till den utökade händelsesessionen (liknande trace flag 3605).

Definition av session i 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