Skutki zmiany trybu zgodności w SQL Server ze 100 na 110

17

Mam bazę danych Mydatabaseutworzoną w SQL Server 2008 R2. Uaktualniłem do SQL Server 2012.

Próbowałem wykonać poniższe zapytanie, aby obliczyć percentyl

select Distinct [KEY],PERCENTILE_CONT(0.25)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q1,PERCENTILE_CONT(0.50)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q2,
PERCENTILE_CONT(0.75)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q3,
PERCENTILE_CONT(1)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q4
from Mydatabase

ale pojawia się komunikat o błędzie

Msg 10762, poziom 15, stan 1, wiersz 1
Funkcja PERCENTILE_CONT jest niedozwolona w bieżącym trybie zgodności. Jest to dozwolone tylko w trybie 110 lub wyższym.

  1. Czy mogę zmienić tryb zgodności na 110?
  2. Jakie są konsekwencje zmiany trybu zgodności ze 100 na 110?

Proszę o poradę

siedmiodniowa żałoba
źródło
OMFG! „SQL Server 2014 zawiera znaczne ulepszenia w komponencie, który tworzy i optymalizuje plany zapytań”. Ale `nie czerpałem z tego żadnej korzyści przez ostatnie 3 lata, ponieważ mój compatibility_levelwciąż ma 100 lat. Fantastycznie!
Simon_Weaver

Odpowiedzi:

9

Spójrz na następujący link:

ZMIEŃ bazę danych Poziom zgodności

Przewiń w dół, a zobaczysz sekcję „Różnice między niższymi poziomami zgodności a poziomem 110” i sprawdź, czy którykolwiek z tych elementów będzie na ciebie wpływał, czy nie. Jeśli nie, po prostu zmień poziom na 110.

steoleary
źródło
3
To zajmie godziny. Jest to narzędzie, które robi to za Ciebie, teraz: Microsoft Data Migration Assistant
MGOwen 12.04.17
5

Istnieje również Doradca uaktualnienia, który pomoże ci zidentyfikować cokolwiek w twoim DB, które może powodować problemy przy zmianie poziomu kompatybilności (w zasadzie półautomatyczny sposób robienia tego, co sugerował @steoleary, co zmniejsza szanse na utratę czegoś).

Steve Pettifer
źródło
Najwyraźniej Asystent migracji danych zastąpił teraz Doradcę uaktualnienia.
MGOwen
Tak, to było na 2012 rok, więc nie jestem zaskoczony, że zmienili nazwę i / lub funkcjonalność. Nie mam czasu na aktualizację baz danych od dłuższego czasu, ponieważ obecnie rzadko mam dużo do czynienia z bazami danych - nawet nie jestem pewien, jaka jest najnowsza wersja!
Steve Pettifer
4

Microsoft Data Migration Assistant pomaga szybko i łatwo znaleźć wszelkie problemy, które mogą uniemożliwić lub skomplikować aktualizację.

Jeśli nie znajdzie problemów (lub jeśli tak, a problem został rozwiązany), możesz po prostu zaktualizować, uruchamiając te polecenia, pojedynczo:

USE master
go
ALTER DATABASE [yourdatabasesname]  SET SINGLE_USER     WITH ROLLBACK IMMEDIATE
go
ALTER DATABASE [yourdatabasesname]  SET COMPATIBILITY_LEVEL = 110    -- 130=SQL Server 2016, 120=2014, 110=2012
go
ALTER DATABASE [yourdatabasesname]  SET MULTI_USER
go
MGOwen
źródło