Sdílet prostřednictvím


Použijte relaci system_health

platí pro:SQL Serverazure SQL Managed Instance

Relace system_health je relace rozšířených událostí, která je ve výchozím nastavení součástí SQL Serveru a spravované instance Azure SQL. Tato relace se spustí automaticky při spuštění databázového systému a probíhá bez jakéhokoliv znatelného vlivu na výkon. Relace shromažďuje systémová data, která můžete použít k řešení problémů s výkonem v databázovém stroji.

Důležité

Doporučujeme relaci nezastavovat, měnit ani odstraňovat system_health . Změny v nastavení relace system_health mohou být přepsány budoucí aktualizací produktu.

Relace shromažďuje následující informace:

  • sql_text a session_id pro každé sezení, které narazí na chybu se závažností >= 20.
  • sql_text a session_id pro všechny sezení, která narazí na chybu související s pamětí. Mezi chyby patří 17803, 701, 802, 8645, 8651, 8657 a 8902.
  • Záznam jakýchkoli problémů s neodezvou plánovače. Zobrazí se v protokolu chyb SQL Serveru jako chyba 17883.
  • Všechny zjištěné deadlocky, včetně grafu deadlocku.
  • callstack, sql_texta session_id pro všechny relace, které čekaly na západky (nebo jiné zajímavé zdroje) po dobu > 15 sekund.
  • callstack, sql_text a session_id pro všechny relace, které čekaly na zámky po dobu 30 sekund.
  • callstack, sql_text a session_id pro všechny relace, které čekaly dlouho na přednostní čekání. Doba trvání se liší podle typu čekání. Preemptivní čekání je místo, kde SQL Server čeká na volání externího rozhraní API.
  • Selhání při přidělování callstack CLR a selhání při virtuálním přidělování session_id.
  • Události kruhového vyrovnávacího zásobníku pro zprostředkovatele paměti, monitorování plánovače, stav nedostatku paměti (OOM) na uzlu paměti, zabezpečení a připojení.
  • Výsledky systémových komponent z sp_server_diagnostics.
  • Stav instance shromažďovaný uživatelem scheduler_monitor_system_health_ring_buffer_recorded.
  • Selhání přiřazení CLR
  • Chyby připojení při použití connectivity_ring_buffer_recorded.
  • Chyby zabezpečení při použití security_error_ring_buffer_recorded.

Poznámka:

Další informace o deadlocích najdete v průvodci deadlocky. Další informace o chybových zprávách SQL najdete v tématu Události a chyby databázového stroje.

Zobrazení dat relace system_health

Relace používá jak cílové místo pro kruhovou vyrovnávací paměť, tak cílové místo pro soubor událostí k ukládání dat. Cílový soubor události je nakonfigurován s maximální velikostí 5 MB a zásadou uchovávání maximálně 4 souborů. V edicích SQL Server Standard a Enterprise má cílový soubor událostí zvýšené limity: maximální velikost 100 MB a politika uchovávání až 10 souborů.

Pokud chcete zobrazit data relace z kruhové vyrovnávací paměti pomocí uživatelského rozhraní Rozšířených událostí dostupného v aplikaci SQL Server Management Studio, viz téma Rozšířené zobrazení cílových dat z Rozšířených událostí v systému SQL Server – Sledování živých dat.

Pokud chcete zobrazit data relace z kruhového bufferu cíle pomocí Transact-SQL, použijte následující dotaz:

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'

Pokud chcete zobrazit data relace ze souboru události, použijte uživatelské rozhraní prohlížeče událostí Rozšířených událostí dostupné v aplikaci SQL Server Management Studio. Další informace naleznete v tématu Zobrazení dat událostí v aplikaci SQL Server Management Studio.

Obnovit relaci system_health

Pokud odstraníte relaci system_health, můžete ji obnovit spuštěním skriptu u_tables.sql. Tento soubor se nachází v následující složce, kde C: představuje jednotku, do které jste nainstalovali programové soubory SQL Serveru, a MSSQLnn hlavní verzi SQL Serveru:

C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install

Po obnovení relace ji musíte spustit pomocí ALTER EVENT SESSION příkazu nebo pomocí uzlu Rozšířené události v Průzkumníku objektů. Jinak se relace spustí automaticky při příštím restartování služby SQL Serveru.

Sezení system_health v Azure SQL

Ve službě Azure SQL Managed Instance můžete data relace zobrazit tím, že v Průzkumníku objektů kliknete pravým tlačítkem myši na jeden z těchto cílů event_file nebo ring_buffer a poté vyberete Zobrazit data cíle.

Ve službě Azure SQL Database není žádná integrovaná system_health relace rozšířených událostí, ale můžete použít sys.fn_xe_file_target_read_file() funkci ke čtení z relací rozšířených událostí, které sami vytvoříte a uložíte v Azure Storage. Návod najdete v tématu Cílový kód souboru událostí pro rozšířené události ve službě Azure SQL Database.