Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
De system_health sessie is een sessie met uitgebreide gebeurtenissen die standaard is opgenomen in SQL Server en Azure SQL Managed Instance. Deze sessie wordt automatisch gestart wanneer de database-engine wordt gestart en wordt uitgevoerd zonder merkbare prestatieoverhead. De sessie verzamelt systeemgegevens die u kunt gebruiken om prestatieproblemen in de database-engine op te lossen.
Belangrijk
U wordt aangeraden de system_health sessie niet te stoppen, te wijzigen of te verwijderen. Wijzigingen die zijn aangebracht in de system_health sessie-instellingen, kunnen worden overschreven door een toekomstige productupdate.
De sessie verzamelt informatie die de volgende informatie bevat:
- De
sql_textensession_idvoor alle sessies die een fout tegenkomen met een ernstniveau >= 20. - De
sql_textensession_idvoor eventuele sessies die een geheugengerelateerde fout tegenkomen. De fouten zijn 17803, 701, 802, 8645, 8651, 8657 en 8902. - Een record van eventuele problemen met niet-rendementende planners. Deze worden weergegeven in het SQL Server-foutenlogboek als fout 17883.
- Eventuele impasses die worden gedetecteerd, inclusief de impassegrafiek.
- De
callstack,sql_textensession_idzijn voor alle sessies die op vergrendelingen (of andere interessante bronnen) > hebben gewacht gedurende 15 seconden. - De
callstack,sql_textensession_idvoor alle sessies die gedurende 30 seconden op vergrendelingen > hebben gewacht. - De
callstack,sql_textensession_idvoor alle sessies die lang hebben gewacht op preemptive waits. De duur varieert per wachttype. Een voorlopige wachttijd is de plaats waar SQL Server wacht op externe API-aanroepen. - De
callstackensession_idvoor CLR-toewijzing en virtuele toewijzingsfouten. - De ringbuffer gebeurtenissen voor de geheugenbroker, scheduler monitor, geheugenknooppunt OOM, beveiliging en connectiviteit.
- Resultaten van systeemcomponenten afkomstig van
sp_server_diagnostics. - Instantiestatus verzameld door
scheduler_monitor_system_health_ring_buffer_recorded. - CLR-toewijzingsfouten.
- Connectiviteitsfouten met behulp van
connectivity_ring_buffer_recorded. - Beveiligingsfouten met behulp van
security_error_ring_buffer_recorded.
Opmerking
Zie de Deadlocks-gids voor meer informatie over deadlocks. Zie Database Engine-gebeurtenissen en -fouten voor meer informatie over SQL-foutberichten.
De system_health sessiegegevens weergeven
De sessie maakt gebruik van zowel het ringbufferdoel als het gebeurtenisbestandsdoel om de gegevens op te slaan. Het gebeurtenisbestandoel is geconfigureerd met een maximale grootte van maximaal 5 MB en bewaart 4 bestanden volgens het bewaarbeleid. In SQL Server Standard- en Enterprise-edities heeft het doelbestand van het evenement verhoogde limieten: een maximale grootte van 100 MB en een bewaarbeleid van maximaal 10 bestanden.
Als u de sessiegegevens van het ringbufferdoel wilt weergeven met de gebruikersinterface uitgebreide gebeurtenissen die beschikbaar is in SQL Server Management Studio, raadpleegt u Geavanceerde weergave van doelgegevens van uitgebreide gebeurtenissen in SQL Server - Live-gegevens bekijken.
Gebruik de volgende query om de sessiegegevens van het ringbufferdoel met Transact-SQL weer te geven:
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'
Als u de sessiegegevens uit het gebeurtenisbestand wilt weergeven, gebruikt u de gebruikersinterface voor logboeken voor uitgebreide gebeurtenissen die beschikbaar zijn in SQL Server Management Studio. Zie Gebeurtenisgegevens weergeven in SQL Server Management Studiovoor meer informatie.
De system_health-sessie herstellen
Als u de system_health sessie verwijdert, kunt u deze herstellen door het u_tables.sql script uit te voeren. Dit bestand bevindt zich in de volgende map, waar C: de schijf aangeeft waar u de SQL Server-programmabestanden hebt geïnstalleerd en MSSQLnn de hoofdversie van SQL Server:
C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install
Nadat u de sessie hebt hersteld, moet u deze starten met behulp van de ALTER EVENT SESSION instructie of met het knooppunt Uitgebreide gebeurtenissen in Objectverkenner. Anders wordt de sessie automatisch gestart wanneer u de SQL Server-service de volgende keer opnieuw start.
De system_health-sessie in Azure SQL
In Azure SQL Managed Instance kunnen de sessiegegevens worden weergegeven door met de rechtermuisknop te klikken op ofwel event_file of ring_buffer doel in Object Explorer en Doelgegevens weergeven te selecteren.
Er is geen ingebouwde system_health uitgebreide gebeurtenissessie in Azure SQL Database, maar u kunt de sys.fn_xe_file_target_read_file() functie gebruiken om te lezen uit uitgebreide gebeurtenissessies die u zelf maakt en opslaat in Azure Storage. Voor een overzicht, zie de doelcode van het gebeurtenisbestand voor uitgebreide gebeurtenissen in Azure SQL Database.