INTRODUCTION
Les versions de Microsoft SQL Server ultérieures à SQL Server 2000 Service Pack 3 (SP3) ont fourni la plupart des correctifs logiciels à l’optimiseur de requête dans un état désactivé par défaut afin d’empêcher les clients de production existants de voir les modifications de plan attendues susceptibles d’entraîner des régressions de performances. Au début, chaque correctif était fourni sous un indicateur de trace distinct. Plus tard, cette pratique a été modifiée de sorte que la plupart des drapeaux étaient combinés sous un seul indicateur de trace (4199). Cette nouvelle pratique a été lancée sur plusieurs versions à partir des mises à jour suivantes :
- Mise à jour cumulative 6 pour SQL Server 2005 Service Pack 3 (SP3)
- Package de mise à jour cumulative 7 pour SQL Server 2008 Service Pack 1 (SP1)
- SQL Server 2008 R2 (RTM)
L’indicateur de trace 4199 était utilisé pour collecter les correctifs logiciels destinés à être activés par défaut dans une version ultérieure, tandis que d’autres indicateurs de trace étaient utilisés pour les situations dans lesquelles un correctif n’était pas destiné à devenir activé par défaut dans sa forme actuelle. À partir de SQL Server 2016 RTM, le paramètre de COMPATIBILITY_LEVEL base de données sera utilisé pour activer par défaut les correctifs logiciels liés à l’indicateur de trace 4199. Cet article décrit les mécanismes et la stratégie de distribution des correctifs affectant le plan pour SQL Server 2016 et versions ultérieures.
Informations supplémentaires
En SQL Server 2016, les correctifs logiciels de l’indicateur de trace 4199 qui sont apportés aux versions précédentes de SQL Server seront activés sous la COMPATIBILITY_LEVEL de base de données 130 sans que l’indicateur de trace 4199 soit activé. L’indicateur de trace 4199 sera utilisé pour publier tous les correctifs logiciels futurs de SQL Server 2016 pour les bases de données en utilisant le niveau de compatibilité 130. Étant donné que l’indicateur de trace 4199 est recommandé uniquement pour les clients qui rencontrent des problèmes de performances spécifiques, il est conseillé de supprimer l’indicateur de trace 4199 après la migration de leurs bases de données vers le dernier niveau de compatibilité. En effet, l’indicateur de trace 4199 sera réutilisé pour les correctifs futurs qui pourraient ne pas s’appliquer à votre application et entraîner des modifications inattendues des performances du plan sur un système de production. Cela signifie que différents correctifs 4199 sont activés pour chaque niveau de compatibilité pris en charge dans une version de produit donnée. Le dernier niveau de compatibilité active déjà tous les correctifs précédents sous l’indicateur de trace 4199. Cela signifie que la mise à niveau d’une base de données vers le dernier niveau de compatibilité et la suppression de l’indicateur de trace 4199 activent toujours tous les correctifs qu’une charge de travail utilisait avant la mise à niveau de la base de données, mais pas les nouveaux correctifs. Si, par la suite, les clients rencontrent des problèmes de performances de requête, essayez d’activer l’option étendue de base de données QUERY_OPTIMIZER_HOTFIXES ou l’indicateur de requête ENABLE_QUERY_OPTIMIZER_HOTFIXES dans un environnement de test pour déterminer si les problèmes sont résolus. Reportez-vous à la documentation sur QUERY_OPTIMIZER_HOTFIXES.
Remarque Par défaut, les bases de données créées dans SQL Server 2016 utilisent le niveau de compatibilité 130 et ont déjà une nouvelle logique d’optimisation activée.
Le principal avantage de ce modèle est qu’il réduit les risques pour les systèmes de production pendant le processus de mise à niveau. Cette approche sépare l’installation d’une nouvelle version majeure de SQL Server de l’activation automatique de toutes les nouvelles modifications du processeur de requêtes. Étant donné que les mises à niveau de version majeure modifient le format de fichier et ne sont pas réversibles, il est judicieux d’utiliser le paramètre COMPATIBILITY_LEVEL, car cela permet au client de passer rapidement à une version antérieure si un problème de performances inattendu du plan est détecté au cours d’une mise à niveau. Si un client découvre une modification de plan inattendue qui bloque une mise à niveau d’application, le client peut atténuer la situation en appliquant un indicateur de plan approprié en utilisant le magasin des requêtes pour forcer le plan précédent, ou peut atténuer la situation en contactant le support technique Microsoft pour aider à résoudre le problème et fournir une solution de contournement ou un correctif. Lorsque tous les problèmes sont atténués, la mise à niveau peut continuer. Les clients doivent intégrer cette fonctionnalité dans leur planification de mise à niveau pour SQL Server 2016.
Le tableau suivant explique le modèle de fonctionnement de l’indicateur de trace 4199 à partir de SQL Server 2016.
| Paramètre | Niveau de compatibilité SQL | Indicateur de trace 4199 | Correctifs logiciels Optimizer antérieurs à SQL Server 2016 RTM | Correctifs logiciels Optimizer après SQL Server RTM 2016 |
|---|---|---|---|---|
| 1. | 120 | Désactivé | Disabled | Disabled |
| 2. | 120 | Activer | Activé | Disabled |
| 3. | 130 | Désactivé | Activé par le niveau de compatibilité | Disabled |
| 4. | 130 | Activer | Activé par le niveau de compatibilité | Activé par le niveau de compatibilité |
Remarque Le paramètre n° 3 est recommandé pour les clients qui viennent d’effectuer une mise à niveau vers SQL Server 2016.
Pour les versions majeures postérieures à SQL Server 2016, Microsoft prévoit de continuer à utiliser ce modèle de service pour les correctifs logiciels d’optimiseur. Par défaut, ou à chaque version, les correctifs 4199 de la version précédente sont activés dans le niveau de compatibilité suivant. Cela signifie que l’état recommandé pour les clients après avoir migré vers le dernier niveau de compatibilité sera de désactiver l’indicateur de trace 4199. Les correctifs ultérieurs utilisaient l’indicateur de trace 4199 pour activer les correctifs pour les utilisateurs qui doivent activer ces correctifs spécifiques dans une application. Il est conseillé aux clients de désactiver l’indicateur de trace 4199 après la mise à niveau d’une application vers le dernier niveau de compatibilité afin d’éviter que des modifications d’optimiseur futures inattendues ne soient activées sur une application. La mise à niveau vers le dernier niveau de compatibilité et la suppression de l’indicateur de trace 4199 activent toujours tous les correctifs qu’une charge de travail exploitait avant la mise à niveau, mais pas les nouveaux correctifs.
Remarque Si de nombreux correctifs logiciels d’optimisation sont activés sous l’indicateur de trace 4199, certains utilisent d’autres indicateurs de trace. L’indicateur de trace 4199 couvrait historiquement les indicateurs de trace qui sont largement applicables et susceptibles d’être activés par défaut dans une prochaine version. Les indicateurs de trace alternatifs sont utilisés dans les correctifs logiciels lorsque les conditions sont très spécifiques à quelques clients uniquement, lorsque le correctif peut provoquer des régressions de performances dans d’autres types d’applications ou lorsque la fonctionnalité interne peut voir des modifications avant d’être activée pour tout le monde. Microsoft continuera d’utiliser d’autres indicateurs de trace selon les besoins pour assurer la maintenance du produit.
Remarque Cet article se concentre sur le modèle de publication des correctifs de l’indicateur de trace 4199 sur le dernier niveau de compatibilité du dernier produit. (Au moment de la publication, il s’agit de SQL Server 2016.) Les correctifs logiciels Optimizer peuvent être publiés sur les anciennes versions commercialisées de SQL Server ou sur les niveaux de compatibilité inférieurs (version 120 ou antérieure) de SQL Server 2016. Microsoft évalue chaque cas et détermine s’il faut utiliser l’indicateur de trace 4199 ou un indicateur de trace différent. Comme les modifications autres que les correctifs sont également activées lors d’un passage à un niveau de compatibilité ultérieur, il n’y a aucune promesse spécifique qu’aucune modification de plan ne se produira au cours d’une mise à niveau (avec ou sans l’indicateur de trace 4199). Les clients doivent toujours tester attentivement les modifications apportées au niveau de compatibilité pour les applications de production et utiliser des technologies d’atténuation, telles que le Magasin des requêtes, en cas de problème de performances lié au choix de plan.
Pour référence, les indicateurs de trace suivants ont été utilisés pour les correctifs logiciels du processeur de requêtes avant l’introduction de l’indicateur de trace 4199 :
4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4115, 4116, 4117, 4119, 4120, 4121, 4122, 4124, 4125, 4126, 4127, 4128, 4129, 4131, 4133, 4135.
SQL Server 2012 et versions ultérieures
L’indicateur de trace 4199 est inclus dans les versions commerciales de SQL Server 2012 et versions ultérieures.
Comment activer l’indicateur de trace 4199
Vous pouvez activer l’indicateur de trace 4199 au démarrage ou dans une session utilisateur. Cet indicateur de trace a un effet au niveau global ou au niveau de la session. Pour activer l’indicateur de trace 4199, utilisez la commande DBCC TRACEON ou utilisez –T 4199 comme paramètre de démarrage.
Si DBCC TRACEON\TRACEOFF est utilisé, cela ne régénère pas un nouveau plan mis en cache pour les procédures stockées. Les plans peuvent se trouver dans le cache qui ont été créés sans l’indicateur de trace.
Pour plus d’informations sur l’activation ou la désactivation des indicateurs de trace et pour obtenir des explications sur les indicateurs de trace globaux et au niveau de la session, reportez-vous aux rubriques suivantes dans la documentation en ligne de SQL Server :
- DBCC TRACEON (Transact-SQL)
- Procédure : configurer les options de démarrage du serveur (Gestionnaire de configuration SQL Server)
Références
Pour plus d’informations sur le schéma d’appellation pour les mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
822499
Nouveau schéma d’appellation pour les packages de mise à jour logicielle Microsoft SQL Server
Pour plus d’informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
824684
Description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft