Changer le niveau de compatibilité de la base de données et utiliser le Magasin des requêtes

S’applique à :SQL Server - Windows uniquement

Dans SQL Server 2016 (13.x) et versions ultérieures, certaines modifications sont activées uniquement une fois que le niveau de compatibilité de la base de données a changé. Cette opération a été effectuée pour plusieurs raisons :

  • Étant donné que la mise à niveau est une opération unidirectionnelle (il est impossible de faire passer le format de fichier à une version antérieure), le fait de séparer l’activation de nouvelles fonctionnalités pour en faire une opération distincte dans la base de données peut être intéressant. Il est possible de rétablir un paramètre à un niveau de compatibilité de base de données antérieur. Le nouveau modèle réduit le nombre d’éléments devant se produire lors de l’interruption d’une fenêtre.

  • Les modifications apportées au processeur de requêtes peuvent avoir des effets complexes. Même si une « bonne » modification apportée au système peut être intéressante pour la plupart des charges de travail, elle peut provoquer une régression inacceptable sur une requête importante pour d’autres. Le fait de séparer cette logique du processus de mise à niveau permet à des fonctionnalités telles que le magasin des requêtes, d’atténuer rapidement les régressions de choix de plan ou même de les éviter complètement dans les serveurs de production.

Voici les comportements auxquels vous pouvez vous attendre avec SQL Server 2017 (14.x) quand une base de données est attachée ou restaurée et après une mise à niveau sur place :

  • Si le niveau de compatibilité d'une base de données utilisateur est à 100 ou supérieur avant la mise à niveau, il reste le même après la mise à niveau.
  • Si le niveau de compatibilité d’une base de données utilisateur était à 90 avant la mise à niveau, dans la base de données mise à niveau, le niveau de compatibilité est défini à 100, ce qui correspond au niveau de compatibilité le plus bas pris en charge dans SQL Server 2017 (14.x).
  • Les niveaux de compatibilité des bases de données tempdb, model, msdb et Resource databases sont définis sur le niveau de compatibilité actuel après la mise à niveau.
  • La base de données système master conserve le niveau de compatibilité qu'elle avait avant la mise à niveau.

Le processus de mise à niveau permettant d’activer la nouvelle fonctionnalité du processeur de requêtes concerne le modèle de maintenance post-lancement du produit. Certains de ces correctifs sont publiés sous l’indicateur de trace 4199. Les clients ayant besoin de correctifs peuvent les accepter sans provoquer de régressions inattendues pour d’autres clients. Le modèle de maintenance post-lancement des correctifs logiciels du processeur de requêtes est documenté ici. À compter de SQL Server 2016 (13.x), le passage à un nouveau niveau de compatibilité rend l’indicateur de trace 4199 inutile, car ces correctifs sont maintenant activés par défaut dans le niveau de compatibilité le plus récent. Par conséquent, dans le cadre du processus de mise à niveau, il est important de vérifier que 4199 n’est pas activé une fois le processus de mise à niveau terminé.

Notes

L’indicateur de trace 4199 est néanmoins toujours nécessaire pour activer les nouveaux correctifs du processeur de requêtes publiés après la version RTM, le cas échéant.

Le flux de travail recommandé pour mettre à niveau le processeur de requêtes vers la dernière version du code est documenté dans la section Maintenir la stabilité des performances lors de la mise à niveau vers une version plus récente de SQL Server de la rubrique Scénarios d’utilisation du Magasin des requêtes et est illustré ci-dessous.

Diagramme montrant le workflow recommandé pour la mise à niveau du processeur de requêtes vers la dernière version du code.

Depuis SQL Server Management Studio v18, les utilisateurs peuvent être guidés tout au long du workflow recommandé en utilisant l’Assistant Paramétrage de requêtes. Pour plus d’informations, consultez Mise à niveau des bases de données à l’aide de l’Assistant Paramétrage de requêtes.

Voir aussi