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 2012 Compatibility

Termin Definicja
SQL Server 2012 Compatibility

Poziom zgodności SQL Server 2012 pozwala uruchomić bazę na nowszej instancji z zachowaniem dawnej semantyki zapytań.

Poziom zgodności 110 w SQL Server

SQL Server 2012 Compatibility oznacza poziom zgodności bazy danych ustawiony na wartość 110. Jest to parametr przypisany do konkretnej bazy, a nie do całej instancji SQL Server. Poziom 110 został wprowadzony wraz z SQL Server 2012 i służy do zachowania określonych zachowań języka T-SQL, optymalizatora zapytań oraz wybranych mechanizmów aparatu bazodanowego podczas uruchamiania bazy na nowszej wersji silnika.

Ustawienie poziomu 110 nie powoduje uruchomienia SQL Server 2012 wewnątrz nowszej instancji. Silnik nadal działa w wersji zainstalowanej na serwerze, a poziom zgodności wpływa tylko na zachowanie wybranych funkcji bazy. Nie jest to także tryb pełnej emulacji poprzedniej wersji. Część różnic między wydaniami może zależeć od ustawień instancji, konfiguracji bazy, zmian w strukturze danych albo sposobu wykonania zapytania.

Wpływ poziomu 110 na zapytania i optymalizację

Najważniejsze znaczenie poziomu zgodności ujawnia się przy przenoszeniu bazy z SQL Server 2012 na nowszy silnik. Wartość 110 pozwala zachować starszą semantykę wybranych konstrukcji T-SQL, dzięki czemu istniejące procedury, widoki, funkcje i aplikacje mogą działać podobnie jak przed migracją. Nie gwarantuje to jednak identycznych planów wykonania ani identycznego czasu odpowiedzi.

Poziom 110 jest związany z zachowaniem starszego modelu estymacji liczności używanego przez optymalizator. Nowszy model kardynalności został wprowadzony dla poziomu zgodności 120 w SQL Server 2014. Estymacja liczby wierszy wpływa na wybór operatorów planu, kolejność złączeń, sposób dostępu do indeksów oraz decyzję o użyciu przetwarzania równoległego. Z tego powodu podniesienie poziomu zgodności może poprawić jedne zapytania, ale pogorszyć inne, nawet gdy kod aplikacji pozostaje bez zmian.

Zmiana poziomu może również ujawnić niezgodności składniowe lub zależności od dawnych zachowań. Dotyczy to zwłaszcza aplikacji, które opierają działanie na nieudokumentowanych szczegółach optymalizacji, niejawnych konwersjach typów, kolejności ewaluacji albo zapytaniach generowanych dynamicznie. Sam fakt, że baza została pomyślnie dołączona do nowszego silnika, nie potwierdza poprawności wszystkich ścieżek aplikacji.

Sprawdzenie i zmiana ustawienia bazy

Aktualny poziom zgodności można sprawdzić w widoku katalogowym sys.databases. Przykładowe zapytanie to SELECT name, compatibility_level FROM sys.databases;. Wynik 110 wskazuje poziom zgodności SQL Server 2012. Warto odróżnić tę wartość od kolumny server_version zwracanej przez funkcję SERVERPROPERTY, ponieważ wersja instancji i poziom zgodności bazy opisują dwa różne elementy środowiska.

Zmianę wykonuje się poleceniem ALTER DATABASE [NazwaBazy] SET COMPATIBILITY_LEVEL = 110;. Polecenie wymaga odpowiednich uprawnień i powinno być wykonane wobec właściwej bazy. Przed jego użyciem należy sprawdzić, czy zainstalowana wersja SQL Server obsługuje poziom 110. W nowszych wydaniach poziomy zgodności są utrzymywane dla celów migracyjnych, ale zakres dostępnych poziomów zależy od wersji silnika.

Po zmianie ustawienia należy przeanalizować błędy aplikacji, procedury składowane, funkcje, widoki oraz zapytania wykonywane najczęściej i te, które są najbardziej wrażliwe na czas odpowiedzi. Przydatne jest porównanie planów wykonania, statystyk czasu CPU, liczby odczytanych stron oraz liczby zwróconych wierszy. Test powinien obejmować zarówno odczyt, jak i modyfikację danych, ponieważ zgodność składniowa nie wyklucza problemów z blokadami, transakcjami lub wydajnością.

Rola poziomu 110 podczas migracji SQL Server

Poziom zgodności 110 może być etapem przejściowym po przeniesieniu bazy na nowszą instancję. Pozwala najpierw uruchomić bazę z zachowaniem starszych reguł, a dopiero później osobno ocenić skutki podniesienia poziomu do wartości właściwej dla docelowej wersji silnika. Takie rozdzielenie migracji technicznej od modernizacji zachowania zapytań ułatwia ustalenie, czy problem wynika z przeniesienia danych, zmiany konfiguracji, nowego planu wykonania czy samego poziomu zgodności.

Przed podniesieniem poziomu należy wykonać kopię zapasową, sprawdzić zgodność używanych funkcji oraz przetestować aplikację na reprezentatywnych danych. Szczególnej uwagi wymagają raporty, zapytania z wieloma złączeniami, procedury korzystające z tabel tymczasowych oraz operacje, których wydajność zależy od statystyk i rozkładu danych. W razie pogorszenia działania można tymczasowo powrócić do poprzedniego poziomu, o ile docelowa wersja silnika nadal go obsługuje, lecz nie zastępuje to analizy przyczyny.

SQL Server 2012 Compatibility należy więc traktować jako ustawienie kompatybilności konkretnej bazy, a nie jako oznaczenie wersji całego środowiska. Jego prawidłowa ocena wymaga połączenia informacji z katalogu systemowego, dokumentacji używanych obiektów oraz pomiarów rzeczywistych zapytań. Przy zastosowaniach serwerowych diagnostyka powinna obejmować także zależności aplikacyjne, harmonogramy zadań i procedury wdrożeniowe, ponieważ zmiana jednego parametru bazy może oddziaływać na wiele komponentów korzystających z tego samego silnika.

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