Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Sessionen system_health är en extended events-session som ingår som standard med SQL Server och Azure SQL Managed Instance. Den här sessionen startar automatiskt när databasmotorn startar och körs utan märkbara prestandakostnader. Sessionen samlar in systemdata som du kan använda för att felsöka prestandaproblem i databasmotorn.
Viktigt!
Vi rekommenderar att du inte stoppar, ändrar eller tar bort system_health sessionen. Ändringar som görs i system_health sessionsinställningarna kan skrivas över av en framtida produktuppdatering.
Sessionen samlar in information som innehåller följande information:
-
sql_textochsession_idför alla sessioner som har ett fel med allvarlighetsgrad >= 20. - Och
sql_textsession_idför alla sessioner som påträffar ett minnesrelaterat fel. Felen omfattar 17803, 701, 802, 8645, 8651, 8657 och 8902. - Problem med icke-framgångsrik schemaläggning loggats. Dessa visas i SQL Server-felloggen som fel 17883.
- Eventuella dödlägen som identifieras, inklusive dödlägesdiagrammet.
-
callstack,sql_text, ochsession_idför alla sessioner som har väntat på låsningar (eller andra intressanta resurser) under > 15 sekunder. - ,
callstacksql_text, ochsession_idför alla sessioner som har väntat på lås > i 30 sekunder. - ,
callstacksql_text, ochsession_idför alla sessioner som har väntat länge på förebyggande väntetider. Varaktigheten varierar beroende på väntetyp. En förebyggande väntan är där SQL Server väntar på externa API-anrop. -
callstackochsession_idför CLR allokering och virtuella allokeringsfel. - Ringbufferthändelserna för minneskoordinatorn, schemaläggarens övervakare, minnesnodens OOM, säkerhet och anslutning.
- Systemkomponenten är resultatet från
sp_server_diagnostics. - Hälsa för instansen insamlad av
scheduler_monitor_system_health_ring_buffer_recorded. - CLR-allokeringsfel.
- Anslutningsfel vid användning av
connectivity_ring_buffer_recorded. - Säkerhetsfel vid användning av
security_error_ring_buffer_recorded.
Anmärkning
Mer information om dödlägen finns i guiden Dödlägen. Mer information om SQL-felmeddelanden finns i Händelser och fel i databasmotorn.
Visa system_health session data
Sessionen använder både ringbuffertmålet och händelsefilens mål för att lagra data. Händelsefilens mål konfigureras med en maximal storlek på 5 MB och en filkvarhållningsprincip på 4 filer. I SQL Server Standard- och Enterprise-utgåvor har händelsefilmålet ökade gränser: en maximal storlek på 100 MB och en filkvarhållningsprincip på 10 filer.
Information om hur du visar sessionsdata från ringbuffertmålet med användargränssnittet Extended Events som är tillgängligt i SQL Server Management Studio finns i Avancerad visning av måldata från utökade händelser i SQL Server – Titta på livedata.
Om du vill visa sessionsdata från ringbuffertmålet med Transact-SQL använder du följande fråga:
SELECT CAST(xet.target_data as xml) AS target_data
FROM sys.dm_xe_session_targets xet
JOIN sys.dm_xe_sessions xe
ON xe.address = xet.event_session_address
WHERE xe.name = 'system_health'
Om du vill visa sessionsdata från händelsefilen använder du användargränssnittet för loggboken Extended Events som är tillgängligt i SQL Server Management Studio. Mer information finns i Visa händelsedata i SQL Server Management Studio.
Återställa system_health-sessionen
Om du tar bort system_health sessionen kan du återställa den genom att köra skriptet u_tables.sql . Den här filen finns i följande mapp, där C: representerar den enhet där du installerade SQL Server-programfilerna och MSSQLnn huvudversionen av SQL Server:
C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install
När du har återställt sessionen måste du starta den med hjälp av -instruktionen ALTER EVENT SESSION eller med hjälp av noden Utökade händelser i Object Explorer. Annars startar sessionen automatiskt nästa gång du startar om SQL Server-tjänsten.
System_health-sessionen i Azure SQL
I Azure SQL Managed Instance system_health kan sessionsdata visas genom att högerklicka på antingen event_file eller ring_buffer mål i Object Explorer och välja Visa måldata.
Det finns ingen inbyggd system_health utökad händelsesession i Azure SQL Database, men du kan använda sys.fn_xe_file_target_read_file() funktionen för att läsa från extended event-sessioner som du skapar själv och lagrar i Azure Storage. En genomgång finns i Målkod för händelsefil för utökade händelser i Azure SQL Database.