| Termin | Definicja |
|---|---|
| Model zgodności zapytań | Model zgodności zapytań to poziom compatibility level bazy, decydujący o zachowaniu optymalizatora i dostępnej składni. Compatibility level jako ustawienie bazy danych SQL ServerModel zgodności zapytań, określany w SQL Server jako Wartość jest przechowywana w katalogu systemowym i można ją odczytać między innymi z widoku Wpływ poziomu zgodności na składnię i plan wykonaniaZmiana poziomu zgodności może wpływać na sposób interpretowania niektórych konstrukcji języka T-SQL, dostępność określonych zachowań oraz wybór planu wykonania. Szczególne znaczenie ma część optymalizacyjna: nowszy poziom może włączyć nowsze reguły optymalizatora, zmienione modele estymacji liczby wierszy i nowe mechanizmy przetwarzania zapytań. W efekcie to samo zapytanie może otrzymać inny plan po zmianie poziomu, nawet jeśli tekst zapytania i dane nie zostały zmienione. Poziom zgodności nie jest przełącznikiem zmieniającym format plików danych ani metodą aktualizacji całego silnika. Nie powoduje również automatycznej konwersji aplikacji do nowszej składni. Jego działanie dotyczy przede wszystkim zgodności zachowania bazy z wcześniejszą wersją SQL Server oraz możliwości kontrolowanego włączania zmian wprowadzonych w kolejnych wydaniach. Dlatego migracja bazy na nowszy silnik może początkowo pozostawić jej starszy poziom zgodności, aby ograniczyć ryzyko nagłej zmiany planów zapytań. W praktyce ten parametr trzeba odróżniać od ustawień takich jak Sprawdzanie i kontrolowana zmiana ustawieniaAktualny poziom można sprawdzić poleceniem Zmiana odbywa się instrukcją Jeżeli po podniesieniu poziomu pojawi się regresja wydajności, przyczyną może być nowy plan wykonania, a nie uszkodzenie danych. Do rozpoznania problemu porównuje się między innymi plan aktualny z planem wcześniejszym, statystyki, wartości parametrów i czas trwania zapytania. Przydatne są także mechanizmy Query Store, jeśli zostały skonfigurowane w danej bazie, ponieważ pozwalają analizować historię planów i wykonywania zapytań. Znaczenie parametru podczas diagnostyki bazyDiagnostyka problemu z zapytaniem powinna rozpocząć się od ustalenia wersji silnika, poziomu zgodności bazy i kontekstu, w którym zapytanie jest wykonywane. Ten sam kod może działać inaczej po przeniesieniu bazy między instancjami, gdy zmieni się wersja SQL Server albo poziom zgodności. Sam komunikat o błędzie nie zawsze wskazuje bezpośrednio na tę właściwość, dlatego należy zestawić go z tekstem zapytania, planem wykonania oraz informacjami o obiektach używanych przez zapytanie. W przypadku komputera używanego do pracy z bazą istotne jest rozróżnienie problemu silnika od problemu systemu lokalnego. Błąd związany z połączeniem, sterownikiem, uprawnieniami lub konfiguracją aplikacji może wystąpić przed wykonaniem zapytania i wtedy zmiana poziomu zgodności niczego nie naprawi. Jeżeli zapytanie dociera do SQL Server, dopiero analiza planu, komunikatu parsera i ustawień konkretnej bazy pozwala ocenić, czy model zgodności ma związek z usterką. Przed zmianą ustawienia należy udokumentować wartość początkową, wykonać testy na kopii lub środowisku testowym i zachować możliwość powrotu do poprzedniej konfiguracji. Pozwala to odróżnić skutki zmiany poziomu zgodności od równoczesnych zmian w danych, statystykach, indeksach lub kodzie aplikacji. |