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

Widok sys.database_compatibility_levels

Termin Definicja
Widok sys.database_compatibility_levels

sys.database_compatibility_levels zwraca listę dostępnych poziomów zgodności bazy obsługiwanych przez instancję.

Rola widoku sys.database_compatibility_levels w SQL Server

sys.database_compatibility_levels jest systemowym widokiem katalogowym aparatu Microsoft SQL Server. Zwraca listę poziomów zgodności bazy danych, które są obsługiwane przez konkretną instancję. Poziom zgodności, określany wartością liczbową, wpływa na zachowanie części języka Transact-SQL oraz wybranych mechanizmów optymalizatora zapytań. Nie jest to numer wersji samej bazy danych ani informacja o wydaniu systemu Windows.

Widok opisuje możliwości bieżącej instancji, dlatego jego wynik należy interpretować w kontekście serwera, na którym wykonano zapytanie. Ta sama baza danych może mieć inny dozwolony poziom zgodności po przeniesieniu na starszą albo nowszą wersję SQL Server. Dostępność wartości nie oznacza jednak, że każda z nich będzie właściwa dla konkretnej aplikacji. Wybór poziomu powinien uwzględniać używane zapytania, procedury składowane, funkcje języka i zachowanie planów wykonania.

Jak odczytać dostępne poziomy zgodności

Najprostsze zapytanie odczytujące zawartość widoku ma postać SELECT compatibility_level FROM sys.database_compatibility_levels;. Wynikiem jest zbiór wartości liczbowych reprezentujących poziomy akceptowane przez instancję. Sortowanie można wymusić instrukcją ORDER BY compatibility_level, a sprawdzenie najwyższej wartości ułatwia użycie SELECT MAX(compatibility_level) FROM sys.database_compatibility_levels;.

W praktyce wynik tego widoku warto porównać z ustawieniem konkretnej bazy, odczytywanym z widoku sys.databases. Przykładowe zapytanie SELECT name, compatibility_level FROM sys.databases; pokazuje, jaki poziom jest aktualnie przypisany każdej bazie. Wartość z sys.databases.compatibility_level powinna znajdować się wśród poziomów zwracanych przez sys.database_compatibility_levels. Jeżeli aplikacja zgłasza błąd po migracji, takie porównanie pozwala oddzielić problem z nieobsługiwaną wartością od problemu wynikającego ze zmiany zachowania zapytań.

Poziom zgodności a działanie zapytań

Poziom zgodności jest ustawieniem bazy danych, ale nie przełącza całego aparatu SQL Server na starszą wersję. Funkcje silnika, formaty plików i możliwości instancji nadal wynikają z wersji oraz konfiguracji serwera. Poziom może natomiast zachować wybrane wcześniejsze reguły interpretacji języka i starsze zachowanie optymalizatora, co pomaga ograniczyć ryzyko po aktualizacji środowiska.

Zmiana poziomu może wpłynąć między innymi na wybór planu wykonania, estymację liczby wierszy, sposób optymalizacji predykatów oraz dostępność określonych składni. Dlatego przed zmianą należy przetestować zapytania o dużym znaczeniu dla działania aplikacji, procedury składowane i zadania wykonywane cyklicznie. Przydatne jest również porównanie czasu wykonania, planów zapytań oraz obciążenia procesora i pamięci przed zmianą i po niej. Sam fakt, że nowa wartość jest zwracana przez widok, potwierdza jej obsługę przez instancję, ale nie potwierdza poprawności działania aplikacji po jej zastosowaniu.

Sprawdzanie ustawienia przed migracją bazy

Podczas przenoszenia bazy na inną instancję warto najpierw odczytać jej bieżący poziom zgodności, a następnie sprawdzić listę wartości dostępnych na serwerze docelowym. Jeżeli docelowa instancja nie obsługuje poziomu używanego przez bazę, konieczne jest zaplanowanie odpowiedniej zmiany. Do ustawienia poziomu służy polecenie ALTER DATABASE [NazwaBazy] SET COMPATIBILITY_LEVEL = <wartość>;, wykonywane z zachowaniem prawidłowej nazwy bazy i wartości zwróconej jako obsługiwana.

Diagnostyka powinna obejmować także identyfikację błędów składni, ostrzeżeń, nieoczekiwanych zmian planów i różnic w wynikach zapytań. Przydatne jest zapisanie stanu wyjściowego z sys.databases, ponieważ pozwala później jednoznacznie ustalić, czy problem pojawił się przed zmianą ustawienia, czy po niej. W środowisku, w którym nie można bezpośrednio zmieniać konfiguracji instancji, sam widok pozostaje bezpiecznym źródłem informacji o obsługiwanych poziomach. Analiza jego wyniku pomaga określić, czy przyczyną problemu jest niezgodność wersji, ustawienie bazy, czy dopiero sposób wykonania konkretnego zapytania.

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