| Termin | Definicja |
|---|---|
| Poziom zgodności bazy danych (compatibility level) | Compatibility level pozwala uruchomić nowszy silnik przy zachowaniu zachowania starszej wersji dla danej bazy. Rola poziomu zgodności w Microsoft SQL ServerPoziom zgodności bazy danych (compatibility level) to ustawienie dostępne w Microsoft SQL Server, które określa, z jakim zestawem zachowań zgodnych z określoną generacją silnika ma działać dana baza. Ustawienie jest przypisane do konkretnej bazy, a nie do całej instancji. Dzięki temu na jednej instancji można uruchamiać bazy korzystające z różnych poziomów zgodności, o ile są one obsługiwane przez zainstalowaną wersję SQL Server. Mechanizm służy przede wszystkim do kontrolowanego przechodzenia na nowszą wersję silnika. Baza może zostać przeniesiona na nowszy SQL Server, ale początkowo zachować część wcześniejszych reguł przetwarzania zapytań i interpretacji języka T-SQL. Nie oznacza to jednak uruchomienia starego silnika wewnątrz nowego. Wersję serwera, dostępne funkcje oraz zgodność plików określa sam silnik SQL Server, natomiast compatibility level wpływa na wybrane zachowania bazy podczas wykonywania zapytań. Wartości 100–160 i ich powiązanie z wersją silnikaWartość poziomu zgodności jest zapisywana jako liczba całkowita. Przykładowo poziom 100 odpowiada zachowaniom zgodności z SQL Server 2008, 110 z SQL Server 2012, 120 z SQL Server 2014, 130 z SQL Server 2016, 140 z SQL Server 2017, 150 z SQL Server 2019, a 160 z SQL Server 2022. Sama liczba nie jest numerem wersji instancji. SQL Server 2022 może obsługiwać bazę pozostawioną na poziomie 150, ale baza taka nie korzysta automatycznie ze wszystkich zmian wprowadzonych dla poziomu 160. Poziom zgodności nie jest ustawieniem pozwalającym cofnąć wszystkie właściwości nowszej wersji. Nie zmienia między innymi fizycznej architektury instancji, wersji systemu operacyjnego ani ogólnej wersji zainstalowanego produktu. Nie zapewnia również pełnej zgodności aplikacji, jeżeli aplikacja korzysta z usuniętych funkcji, zmienionych sterowników albo innej konfiguracji połączeń. Przed zmianą należy sprawdzić dokumentację konkretnej wersji SQL Server oraz zależności używane przez daną bazę. Wpływ ustawienia na zapytania i plan wykonaniaZmiana compatibility level może zmienić sposób optymalizacji zapytań. W SQL Server poziom zgodności jest powiązany między innymi z dostępnymi zmianami procesora zapytań, regułami optymalizacji oraz zachowaniem estymatora liczby wierszy. W rezultacie to samo zapytanie może po zmianie otrzymać inny plan wykonania. Plan może być korzystniejszy, ale w konkretnych przypadkach może także ujawnić regresję wydajności, zwłaszcza gdy zapytanie wcześniej zależało od określonego sposobu szacowania selektywności filtrów lub kolejności operacji. Poziom zgodności może wpływać również na interpretację wybranych konstrukcji T-SQL, działanie nowych funkcji języka oraz reguły przetwarzania wprowadzane w kolejnych wersjach SQL Server. Dlatego po zmianie ustawienia należy przetestować zapytania raportowe, procedury składowane, funkcje, widoki, zadania oraz aplikacje korzystające z bazy. Szczególną uwagę warto zwrócić na zapytania długotrwałe, operacje masowe, złożone połączenia tabel i instrukcje, których plany wykonania były wcześniej wymuszane lub przechowywane w pamięci podręcznej. Odczyt i bezpieczna zmiana compatibility levelAktualny poziom zgodności można odczytać z widoku katalogowego Zmiana ustawienia wykonywana jest poleceniem Problemy z poziomem zgodności mogą objawiać się jako błędy składni, różnice w wynikach zapytań, nagłe zwiększenie czasu wykonania albo większe obciążenie serwera po migracji. Diagnostyka wymaga wtedy porównania wersji SQL Server, ustawień bazy, planów wykonania i kodu aplikacji. Przy pracy z laptopem lub komputerem PC, na którym działa lokalne środowisko testowe albo narzędzie klienckie SQL Server, można również sprawdzić konfigurację połączenia, wersję sterownika i komunikaty generowane przez aplikację. |