Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

SYS.query_context_settings

Termin Definicja
SYS.query_context_settings

sys.query_context_settings przechowuje ustawienia sesji towarzyszące zapytaniom zarejestrowanym w Query Store.

Rola sys.query_context_settings w Query Store

sys.query_context_settings jest katalogowym widokiem systemowym programu Microsoft SQL Server związanym z funkcją Query Store. Przechowuje informacje o kontekście wykonania zapytań zarejestrowanych w Query Store. Kontekst nie oznacza tekstu instrukcji SQL, lecz zestaw ustawień sesji i środowiska kompilacji, które mogły mieć wpływ na sposób interpretacji, optymalizacji albo wykonania danego zapytania.

To rozdzielenie ma znaczenie, ponieważ identyczny tekst zapytania może zostać wysłany przez różne sesje z odmiennymi ustawieniami. Przykładem są opcje z grupy SET, ustawienia języka, format daty, pierwszego dnia tygodnia, schemat domyślny użytkownika albo ustawienia kursorów. SQL Server może potraktować takie wywołania jako różne konteksty, nawet jeżeli ciąg znaków opisujący instrukcję SQL pozostaje taki sam.

Powiązanie kontekstu z zapytaniem i planem wykonania

Wiersze widoku są identyfikowane między innymi przez context_settings_id oraz wartość skrótu kontekstu. Identyfikator kontekstu jest wykorzystywany w relacji z widokiem sys.query_store_query. Dzięki temu można ustalić, jaki kontekst został przypisany do konkretnego zapytania przechowywanego w Query Store, a następnie powiązać je z tekstem SQL, planami wykonania i statystykami runtime.

W praktyce analiza wymaga rozdzielenia kilku obiektów Query Store. sys.query_store_query_text opisuje tekst zapytania, sys.query_store_query przechowuje informacje o zapytaniu i jego kontekście, sys.query_store_plan zawiera zapisane plany, a widoki statystyk wykonania pokazują między innymi czas trwania, zużycie procesora, liczbę odczytów oraz liczbę wykonań. sys.query_context_settings uzupełnia ten model o dane pozwalające wyjaśnić, dlaczego pozornie takie same instrukcje zostały rozdzielone na różne rekordy.

Ustawienia sesji a różnice w wynikach i planach

Niektóre ustawienia kontekstu wpływają przede wszystkim na wybór planu wykonania. Szczególne znaczenie ma opcja SET, ponieważ zestaw opcji sesji może powodować utworzenie odrębnych wariantów planu lub utrudniać bezpośrednie porównanie statystyk z dwóch aplikacji. Jeżeli zapytanie uruchomione przez narzędzie administracyjne ma inny kontekst niż zapytanie wysyłane przez aplikację, ich czasy wykonania i plany nie muszą opisywać tego samego przypadku diagnostycznego.

Inne elementy kontekstu mogą wpływać na interpretację wartości. Ustawienia języka i formatu daty są istotne przy konwersjach tekstu na typy daty i czasu, natomiast datefirst może zmieniać wynik funkcji zależnych od numeru dnia tygodnia. Z tego powodu nie należy analizować samego tekstu SQL w oderwaniu od kontekstu zapisanego przez Query Store. Przy problemach występujących tylko u części użytkowników lub tylko w jednej aplikacji różnica ustawień sesji może być ważniejsza niż różnica w samym zapytaniu.

Wykorzystanie widoku podczas analizy Query Store

Podczas diagnostyki warto najpierw sprawdzić, czy wiele rekordów reprezentujących podobny tekst zapytania jest związanych z różnymi identyfikatorami kontekstu. Następnie należy porównać przypisane plany i statystyki wykonania oraz ustalić, czy rozbieżność pojawia się po zmianie aplikacji, sterownika, ustawień połączenia albo sposobu inicjalizacji sesji. Sam fakt wystąpienia kilku kontekstów nie jest błędem. Jest informacją, że SQL Server obserwuje zapytanie w więcej niż jednym środowisku sesyjnym.

Widok nie służy do zmiany ustawień sesji ani do wymuszania konkretnego planu. Jest źródłem danych diagnostycznych odczytywanych razem z innymi widokami Query Store. Przy interpretacji należy uwzględnić również zakres czasu przechowywania danych, aktywność Query Store oraz moment kompilacji planu. Prawidłowy wniosek powinien opierać się na zgodności tekstu zapytania, kontekstu, planu i statystyk wykonania, a nie na pojedynczym rekordzie lub samym skrócie kontekstu.