Implications du changement du mode de compatibilité dans SQL Server de 100 à 110

16

J'ai une base de données Mydatabasecréée dans SQL Server 2008 R2. J'ai mis à niveau vers SQL Server 2012.

J'essayais d'exécuter la requête ci-dessous pour calculer le centile

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

mais je reçois une erreur indiquant que

Msg 10762, niveau 15, état 1, ligne 1
La fonction PERCENTILE_CONT n'est pas autorisée dans le mode de compatibilité actuel. Il n'est autorisé qu'en mode 110 ou supérieur.

  1. Puis-je changer le mode de compatibilité en 110?
  2. Quelles sont les implications du changement du mode de compatibilité de 100 à 110?

Veuillez conseiller

Shiva
la source
OMFG! "SQL Server 2014 inclut des améliorations substantielles du composant qui crée et optimise les plans de requête." Mais je n'en profite pas du tout depuis 3 ans car mon compatibility_levelest toujours à 100 ans. Fantastique!
Simon_Weaver

Réponses:

9

Jetez un œil au lien suivant:

Niveau de compatibilité ALTER DATABASE

Faites défiler vers le bas et vous verrez la section "Différences entre les niveaux de compatibilité inférieurs et le niveau 110" et identifiez si l'un de ces éléments vous affectera ou non. Sinon, changez simplement le niveau à 110.

steoleary
la source
3
Cela prendrait des heures. Il existe un outil qui fait cela pour vous, maintenant: Assistant de migration de données
MGOwen
5

Il existe également le Conseiller de mise à niveau qui vous aidera à identifier tout élément de votre base de données qui pourrait causer des problèmes lors de la modification du niveau de compatibilité (essentiellement une manière semi-automatisée de faire ce que @steoleary a suggéré, ce qui réduit les chances que vous ne manquiez de rien).

Steve Pettifer
la source
Apparemment, l' assistant de migration des données a remplacé le conseiller de mise à niveau.
MGOwen
Oui, c'était pour 2012, donc pas surpris qu'ils aient changé le nom et / ou la fonctionnalité. Je ne suis pas au courant de la mise à niveau des bases de données depuis un certain temps, car j'ai rarement grand-chose à voir avec les bases de données de nos jours - je ne sais même pas quelle est la dernière version!
Steve Pettifer
3

L'Assistant Migration de données Microsoft vous aide à trouver rapidement et facilement tout problème susceptible d'empêcher ou de compliquer une mise à niveau.

S'il ne détecte aucun problème (ou s'il le fait, et que vous y avez résolu), vous pouvez simplement mettre à niveau en exécutant ces commandes, une à la fois:

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
la source