J'ai une base de données Mydatabase
créé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.
Veuillez conseiller
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.
Il existe également pgrade Advisor 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 de vous manquez rien).
Microsoft Data Migration Assistant vous aide à trouver rapidement et facilement tout problème pouvant empêcher ou 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