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

SQL Server 2016 Compatibility

Termin Definicja
SQL Server 2016 Compatibility

Poziom zgodności SQL Server 2016 udostępnia część nowszych funkcji przy zachowaniu dawnego zachowania zapytań.

Poziom zgodności 130 a wersja silnika SQL Server

SQL Server 2016 Compatibility oznacza poziom zgodności bazy danych określany wartością 130. Jest to ustawienie zapisane dla konkretnej bazy danych, a nie osobny produkt ani niezależna edycja serwera. Poziom zgodności wpływa na sposób interpretowania części składni T-SQL, działanie wybranych funkcji oraz zachowanie optymalizatora zapytań. Sama zmiana tego poziomu nie konwertuje bazy do innego formatu i nie zmienia numeru wersji zainstalowanego silnika SQL Server.

Baza może działać na nowszej wersji silnika z niższym poziomem zgodności, jeżeli jest to potrzebne podczas migracji aplikacji. Takie rozwiązanie pozwala najpierw przenieść dane i obiekty bazy, a dopiero później kontrolować wpływ nowych reguł optymalizacji i zmian języka zapytań. Poziom 130 wskazuje, że baza ma korzystać z zachowania odpowiadającego SQL Server 2016, o ile dana funkcja jest dostępna w używanej wersji silnika.

Jak SQL Server wykorzystuje poziom zgodności 130

Poziom zgodności jest brany pod uwagę podczas kompilowania zapytań. Może zmienić wybór planu wykonania, sposób szacowania liczby wierszy, dobór operatorów oraz decyzje dotyczące kolejności i sposobu wykonywania części operacji. Z tego powodu identyczne zapytanie może otrzymać inny plan po zmianie poziomu zgodności, nawet gdy tabele, indeksy i dane pozostały bez zmian. Różnica nie oznacza automatycznie błędu w silniku; wynika z zastosowania innego zestawu reguł optymalizacji.

W SQL Server 2016 poziom 130 jest również powiązany z funkcjami i zmianami wprowadzonymi dla tej generacji silnika. Przykładem jest możliwość używania składni temporal tables, czyli tabel system-versioned, oraz funkcji JSON dostępnych w SQL Server 2016. Sam poziom zgodności nie wystarcza jednak do uruchomienia funkcji, której nie obsługuje zainstalowana wersja silnika. Należy rozdzielić trzy kwestie: wersję serwera, poziom zgodności bazy oraz uprawnienia i konfigurację wymagane przez konkretną funkcję.

Sprawdzenie i ustawienie wartości 130

Aktualny poziom zgodności można sprawdzić w widoku katalogowym sys.databases. Przydatne jest zapytanie: SELECT name, compatibility_level FROM sys.databases;. Wartość kolumny compatibility_level równa 130 oznacza poziom zgodności SQL Server 2016. Sprawdzenie warto wykonać dla właściwej bazy, ponieważ ustawienie nie jest globalną właściwością wszystkich baz znajdujących się na tej samej instancji.

Zmianę wykonuje się poleceniem ALTER DATABASE, na przykład: ALTER DATABASE [NazwaBazy] SET COMPATIBILITY_LEVEL = 130;. Przed wykonaniem operacji trzeba użyć rzeczywistej nazwy bazy i upewnić się, że docelowa instancja obsługuje ten poziom. Po zmianie należy ponownie sprawdzić wartość w sys.databases, a następnie przetestować zapytania aplikacji. Szczególną uwagę trzeba zwrócić na zapytania o długim czasie wykonania, procedury składowane, widoki oraz kod korzystający z funkcji zależnych od wersji języka T-SQL.

Testy po migracji bazy do poziomu SQL Server 2016

Przejście na poziom 130 powinno być traktowane jako zmiana mogąca wpływać na wydajność i kompatybilność aplikacji. Najpierw należy porównać działanie najważniejszych operacji na kopii testowej lub w kontrolowanym środowisku. Warto zebrać rzeczywiste zapytania wykonywane przez aplikację, sprawdzić ich wyniki i porównać plany wykonania przed oraz po zmianie. Sam fakt, że zapytanie kończy się bez błędu składni, nie potwierdza jeszcze zachowania oczekiwanej wydajności.

Jeżeli po ustawieniu poziomu 130 pojawi się regresja, diagnostyka powinna obejmować plan wykonania, statystyki, indeksy, parametry procedury oraz różnice w danych. Pomocne może być wymuszenie ponownej kompilacji wybranych planów po zmianie, ale nie powinno się usuwać pamięci podręcznej planów bez określenia zakresu i skutków takiej operacji. Przy analizie należy także sprawdzić, czy problem wynika z poziomu zgodności, czy z innej zmiany wykonanej podczas migracji. W tym zastosowaniu potrzebna jest diagnostyka środowiska serwerowego i samej bazy, bez utożsamiania wartości 130 z fizyczną wersją komputera.

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