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ę


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:



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ś).


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.