Udostępnij za pośrednictwem


Korzystanie z sesji system_health

Dotyczy:SQL ServerAzure SQL Managed Instance

Sesja system_health jest sesją zdarzeń rozszerzonych, która jest domyślnie włączona do SQL Server i Azure SQL Managed Instance. Ta sesja jest uruchamiana automatycznie po uruchomieniu aparatu bazy danych i działa bez zauważalnego obciążenia związanego z wydajnością. Sesja zbiera dane systemowe, których można użyć w celu ułatwienia rozwiązywania problemów z wydajnością silnika baz danych.

Ważne

Zalecamy, aby nie zatrzymywać, zmieniać ani usuwać system_health sesji. Wszelkie zmiany wprowadzone w system_health ustawieniach sesji mogą zostać zastąpione przez przyszłą aktualizację produktu.

Sesja zbiera informacje zawierające następujące informacje:

  • Dla wszelkich sesji, które napotykają sql_text i session_id w przypadku błędu z ważnością >= 20.
  • sql_text i session_id dla wszystkich sesji, które napotykają błąd związany z pamięcią. Błędy obejmują 17803, 701, 802, 8645, 8651, 8657 i 8902.
  • Zapis wszelkich problemów z nierozdzielającym się planistą. Są one wyświetlane w dzienniku błędów programu SQL Server jako błąd 17883.
  • Wszelkie wykryte zakleszczenia, w tym wykres przedstawiający zakleszczenie.
  • Element callstack, sql_text i session_id w odniesieniu do wszystkich sesji, które czekały na zatrzaski (lub inne interesujące zasoby) przez > 15 sekund.
  • callstack, sql_text, i session_id dla wszystkich sesji, które czekały na blokady przez > 30 sekund.
  • sql_text, callstacki session_id dla wszystkich sesji, które czekały przez długi czas na oczekiwania wstępne. Czas trwania zależy od typu oczekiwania. Prewencyjne oczekiwanie to sytuacja, w której SQL Server czeka na zewnętrzne wywołania API.
  • Błędy callstack alokacji środowiska CLR i alokacji wirtualnej session_id.
  • Zdarzenia buforu pierścieniowego dla brokera pamięci, monitora harmonogramu, OOM węzła pamięci, zabezpieczeń i łączności.
  • Rezultaty składnika systemu z sp_server_diagnostics.
  • Stan instancji zbierany przez scheduler_monitor_system_health_ring_buffer_recorded.
  • Błędy alokacji CLR
  • Błędy łączności przy użyciu polecenia connectivity_ring_buffer_recorded.
  • Błędy zabezpieczeń podczas korzystania z security_error_ring_buffer_recorded.

Uwaga / Notatka

Aby uzyskać więcej informacji na temat zakleszczeń, zobacz Przewodnik Zakleszczenia. Aby uzyskać więcej informacji na temat komunikatów o błędach SQL, zobacz Zdarzenia i błędy aparatu bazy danych.

Wyświetlanie danych sesji system_health

Sesja używa zarówno buforu pierścieniowego jako celu, jak i pliku zdarzeń jako celu do przechowywania danych. Obiekt docelowy pliku zdarzenia jest skonfigurowany z maksymalnym rozmiarem 5 MB i zasadami przechowywania plików wynoszącymi 4 pliki. W wersjach SQL Server Standard i Enterprise docelowy plik zdarzeń ma zwiększone limity: maksymalny rozmiar 100 MB oraz zasada przechowywania plików do 10 plików.

Aby wyświetlić dane sesji z buforu pierścienia za pomocą interfejsu użytkownika Zdarzeń Rozszerzonych dostępnego w programie SQL Server Management Studio, zobacz Zaawansowane wyświetlanie danych docelowych Zdarzeń Rozszerzonych w programie SQL Server — oglądanie danych na żywo.

Aby wyświetlić dane sesji z docelowego buforu pierścienia w języku Transact-SQL, użyj następującego zapytania:

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'

Aby wyświetlić dane sesji z pliku zdarzenia, użyj interfejsu użytkownika podglądu zdarzeń rozszerzonych dostępnych w programie SQL Server Management Studio. Aby uzyskać więcej informacji, zobacz Wyświetlanie danych zdarzeń w programie SQL Server Management Studio.

Przywracanie sesji system_health

Jeśli usuniesz sesję system_health , możesz ją przywrócić, wykonując u_tables.sql skrypt. Ten plik znajduje się w następującym folderze, gdzie C: reprezentuje dysk, na którym zainstalowano pliki programu SQL Server i MSSQLnn główną wersję programu SQL Server:

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

Po przywróceniu sesji należy ją uruchomić przy użyciu ALTER EVENT SESSION instrukcji lub za pomocą węzła Zdarzenia rozszerzone w Eksploratorze obiektów. W przeciwnym razie sesja zostanie uruchomiona automatycznie przy następnym ponownym uruchomieniu usługi programu SQL Server.

Sesja system_health w usłudze Azure SQL

W usłudze Azure SQL Managed Instance system_health dane sesji można wyświetlić, klikając prawym przyciskiem event_file lub ring_buffer element docelowy w Eksploratorze Obiektów, a następnie wybierając pozycję Wyświetl dane docelowe.

W usłudze Azure SQL Database nie ma wbudowanej system_health sesji zdarzeń rozszerzonych, ale możesz użyć sys.fn_xe_file_target_read_file() tej funkcji do odczytywania z sesji zdarzeń rozszerzonych tworzonych samodzielnie i przechowywanych w usłudze Azure Storage. Aby zapoznać się z przewodnikiem, zobacz Kod docelowy pliku zdarzeń dla zdarzeń rozszerzonych w usłudze Azure SQL Database.