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

Poziom zgodności bazy danych

Termin Definicja
Poziom zgodności bazy danych

Poziom zgodności bazy danych wpływa na dostępność nowszej składni i zachowanie optymalizatora zapytań.

Czym jest poziom zgodności w SQL Server

Poziom zgodności bazy danych w Microsoft SQL Server określa, z jakim zestawem reguł języka T-SQL oraz zachowań optymalizatora zapytań dana baza ma pracować. Jest właściwością konkretnej bazy, a nie całej instancji. Oznacza to, że dwie bazy działające na tym samym serwerze mogą mieć różne poziomy zgodności i odmiennie interpretować część zapytań lub dobierać inne plany wykonania.

Poziom zgodności nie zmienia wersji plików danych ani samego silnika SQL Server. Można uruchomić starszą bazę na nowszej wersji serwera, pozostawiając jej wcześniejsze ustawienie zgodności, aby ograniczyć ryzyko zmian w działających aplikacjach. Przykładowo poziom 160 jest związany z SQL Server 2022, poziom 150 z SQL Server 2019, a poziom 140 z SQL Server 2017. Dostępne wartości zależą od wersji używanego silnika.

Wpływ ustawienia na składnię i wykonanie zapytań

Zmiana poziomu zgodności może udostępnić składnię wprowadzoną w nowszej wersji SQL Server, ale nie oznacza automatycznej konwersji kodu aplikacji. Zapytanie może nadal zawierać elementy niedostępne w danym poziomie albo zależne od konkretnej wersji serwera. Dlatego przed podniesieniem ustawienia trzeba sprawdzić procedury składowane, widoki, funkcje, wyzwalacze oraz zapytania generowane przez aplikację.

Drugim obszarem jest optymalizator. Poziom zgodności może włączać nowsze reguły optymalizacji, zmieniać estymację liczby wierszy i prowadzić do wyboru innego planu wykonania. W praktyce to samo zapytanie może po zmianie użyć innego indeksu, zmienić kolejność operacji, zastosować odmienny rodzaj złączenia albo inaczej rozdysponować pamięć. Nie każda zmiana planu jest błędem, lecz plan należy ocenić na rzeczywistych danych i przy typowym obciążeniu.

Sprawdzenie wartości i bezpieczna zmiana

Bieżący poziom zgodności można sprawdzić zapytaniem:

SELECT name, compatibility_level FROM sys.databases;

Poziom dla wskazanej bazy zmienia się poleceniem w rodzaju ALTER DATABASE [NazwaBazy] SET COMPATIBILITY_LEVEL = 160;. Wartość 160 należy stosować wyłącznie wtedy, gdy używana wersja SQL Server ją obsługuje. Przed zmianą należy wykonać kopię zapasową, potwierdzić możliwość odtworzenia bazy oraz sprawdzić aplikację w środowisku testowym. Sama poprawna składnia polecenia nie gwarantuje zachowania wcześniejszej wydajności.

Porównanie powinno obejmować czasy wykonania, zużycie procesora, odczyty logiczne, blokowanie i wykorzystanie pamięci. Pomocne jest zapisanie planów wykonania przed zmianą i po niej oraz przejrzenie zapytań o największym czasie trwania. SQL Server Query Store może przechowywać historię zapytań i planów, a także umożliwiać wymuszenie wcześniej sprawdzonego planu dla problematycznego zapytania. Takie działanie jest obejściem dla konkretnego przypadku, a nie zamiennikiem analizy przyczyny.

Znaczenie poziomu zgodności podczas diagnostyki

Jeżeli po aktualizacji SQL Server aplikacja zaczyna działać wolniej, zwraca inny wynik albo zgłasza błąd składni, poziom zgodności powinien być jednym z pierwszych sprawdzanych parametrów. Należy ustalić nazwę bazy, jej aktualną wartość, wersję silnika oraz poziom zgodności, przy którym zapytanie działało poprawnie. Ważne jest również rozróżnienie między zmianą poziomu zgodności a ustawieniami zakresu bazy, takimi jak konfiguracja optymalizatora, tryb parametryzacji czy ustawienia związane z estymacją kardynalności.

Diagnostyka powinna używać powtarzalnego scenariusza: tych samych parametrów zapytania, porównywalnego zestawu danych i podobnego obciążenia serwera. Trzeba sprawdzić, czy problem dotyczy wszystkich zapytań, czy tylko określonych tabel, indeksów albo wartości parametrów. Obniżenie poziomu zgodności może tymczasowo przywrócić wcześniejsze zachowanie, ale utrwala starszy model działania i może ograniczyć dostęp do nowszych możliwości. Docelowo należy poprawić zapytanie, indeksy, statystyki lub konfigurację, a następnie ponownie zweryfikować plan wykonania.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę