Modifier le mode de compatibilité de base de données et utiliser le magasin des requêtesChange the Database Compatibility Mode and Use the Query Store

Cette rubrique s’applique à : OuiSQL Serveraucunbase de données SQL AzureaucunAzure SQL Data Warehouse aucun Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Dans SQL Server 2016 et SQL Server 2017, certaines modifications sont activées uniquement une fois que le niveau DATABASE_COMPATIBILITY d’une base de données a été changé.In SQL Server 2016 and SQL Server 2017, some changes are only enabled once the DATABASE_COMPATIBILITY level for a database has been changed. Cette opération a été effectuée pour plusieurs raisons :This was done for several reasons:

  • É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, comporte un intérêt.Since upgrade is a one-way operation (it is not possible to downgrade the file format), there is value in separating the enablement of new features to a separate operation within the database. Il est possible de rétablir un paramètre à un niveau DATABASE_COMPATIBILITY antérieur.It is possible to revert a setting to a prior DATABASE_COMPATIBILITY level. Le nouveau modèle réduit le nombre d’éléments devant se produire lors de l’interruption d’une fenêtre.The new model reduces the number of things that must happen during an outage window.

  • Les modifications apportées au processeur de requêtes peuvent avoir des effets complexes.Changes to the query processor can have complex effects. Même si une « bonne » modification apportée au système peut être intéressante pour la plupart des clients, elle peut provoquer une régression inacceptable sur une requête importante pour d’autres.Even though a “good” change to the system may be great for most customers - it may cause an unacceptable regression on an important query for others. 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.Separating this logic from the upgrade process allows for features, such as the Query Store, to mitigate plan choice regressions quickly or even avoid them completely in production servers.

Note

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.If the compatibility level of a user database was 100 or higher before the upgrade, it remains the same after upgrade. Si le niveau de compatibilité é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 2017SQL Server 2017.If the compatibility level was 90 before upgrade, in the upgraded database, the compatibility level is set to 100, which is the lowest supported compatibility level in SQL Server 2017SQL Server 2017. 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.The compatibility levels of the tempdb, model, msdb and Resource databases are set to the current compatibility level after upgrade. La base de données système master conserve le niveau de compatibilité qu’elle avait avant la mise à niveau.The master system database retains the compatibility level it had before upgrade.

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.The upgrade process to enable new query processor functionality is related to the post-release servicing model of the product. Certains de ces correctifs sont publiés sous l’indicateur de trace 4199.Some of those fixes are released under trace flag 4199. Les clients nécessitant des correctifs peuvent les choisir sans provoquer de régressions inattendues pour d’autres clients.Customers needing fixes can opt-in to those fixes without causing unexpected regressions for other customers. Le modèle de maintenance post-lancement des correctifs logiciels du processeur de requêtes est documenté ici.The post-release servicing model for query processor hotfixes is documented here. À compter de SQL Server 2016, le passage à un nouveau niveau de compatibilité rend l’indicateur de trace 4199 inutile, dans la mesure où ces correctifs ne sont plus activés par défaut dans le tout dernier niveau de compatibilité.Beginning with SQL Server 2016, moving to a new compatibility level implies that the 4199 trace flag is no longer needed because those fixes are now enabled by default in the latest compatibility level. Par conséquent, dans le cadre du processus de mise à niveau, il est important de confirmer que 4199 n’est pas activé une fois le processus de mise à niveau terminé.Therefore, as part of the upgrade process, it is important to validate that 4199 is not enabled once the upgrade process completes.

Le flux de travail recommandé pour la mise à niveau du processeur de requêtes vers la dernière version du code est :The recommended workflow for upgrading the query processor to the latest version of the code is:

  1. Mettre à niveau une base de données vers SQL Server 2016 sans modifier son niveau de compatibilité (maintien au niveau précédent)Upgrade a database to SQL Server 2016 without changing the database compatibility level (keep it at prior level)

  2. Activez le magasin des requêtes sur la base de données.Enable the query store on the database. Pour plus d’informations sur l’activation et l’utilisation du magasin des requêtes, consultez Monitoring Performance By Using the Query Store.For more information about enabling and using the query store, see Monitoring Performance By Using the Query Store.

  3. Patientez suffisamment pour collecter des données représentatives de la charge de travail.Wait sufficient time to collect representative data of the workload.

  4. Définissez le niveau de compatibilité de la base de données sur le niveau de compatibilité actuel.Change the compatibility level of the database to the current compatibility level.

    Note

    Le dernier niveau de compatibilité dépend de la version de SQL Server.The latest compatibility level depends on the SQL Server version.

    • SQL Server 2016 : 130SQL Server 2016: 130
    • SQL Server 2017 : 140SQL Server 2017: 140
  5. À l’aide de SQL Server Management Studio, évaluez l’existence de régressions des performances sur des requêtes spécifiques suite à la modification du niveau de compatibilité.Using SQL Server Management Studio, evaluate if there are performance regressions on specific queries after the compatibility level change.

  6. En cas de régression, forcez le plan précédent dans le magasin des requêtes.For cases where there are regressions, force the prior plan in the query store.

  7. Si des plans de requête ne peuvent pas être forcés ou si les performances restent insuffisantes, envisagez de revenir au niveau de compatibilité précédent et à faire appel au support technique Microsoft.If there are query plans that fail to force or if performance is still insufficient, consider reverting the compatibility level to the prior setting and then engaging Microsoft Customer Support.

Voir aussiSee Also

Afficher ou modifier le niveau de compatibilité d'une base de donnéesView or Change the Compatibility Level of a Database