Dans SQL Server, vous pouvez utiliser le sys.dm_os_performance_counters
vue de gestion dynamique du système pour renvoyer une liste des fonctionnalités désignées comme obsolètes dans l'instance actuelle de SQL Server.
Pour renvoyer uniquement les fonctionnalités obsolètes, filtrez la vue uniquement sur l'objet SQLServer:Deprecated Features.
La vue inclut également un compteur qui répertorie le nombre de fois que chaque fonctionnalité obsolète a été rencontrée depuis le dernier démarrage de SQL Server. Cela peut être utile pour déterminer si votre application utilise encore ou non des fonctionnalités obsolètes.
L'exécution sur SQL Server nécessite VIEW SERVER STATE
autorisation.
Exemple 1 - Utilisation de base
SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features';
Lorsque je l'exécute sur mon instance SQL Server 2019, j'obtiens 254 lignes, je ne les listerai donc pas ici. Sur mon instance SQL Server 2017, j'obtiens 253 lignes.
Si je réduis les résultats à seulement deux lignes spécifiques, j'obtiendrai peut-être quelque chose comme ceci :
SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features' AND instance_name LIKE '%timestamp%';
Résultat :
+-------------------------------+----------------+------------------------------------+--------------+-------------+ | object_name | counter_name | instance_name | cntr_value | cntr_type | |-------------------------------+----------------+------------------------------------+--------------+-------------| | SQLServer:Deprecated Features | Usage | INSERT NULL into TIMESTAMP columns | 0 | 65792 | | SQLServer:Deprecated Features | Usage | TIMESTAMP | 1 | 65792 | +-------------------------------+----------------+------------------------------------+--------------+-------------+
Le site Web de Microsoft contient une liste complète des fonctionnalités obsolètes du moteur de base de données dans SQL Server 2017, ainsi que les mesures recommandées à prendre pour toute fonctionnalité marquée pour obsolescence. La liste est la même que celle de SQL Server 2016.
Exemple 2 - Utilisation de la vue via une application
Si vous utilisez le sys.dm_os_performance_counters
vue dans une application, vous devez éviter d'utiliser le caractère générique astérisque (*
) pour renvoyer toutes les colonnes des vues et fonctions de gestion dynamique du système (comme conseillé par Microsoft). Dans de tels cas, si vous souhaitez renvoyer toutes les colonnes, il est préférable d'inclure chaque nom de colonne dans la requête.
Par conséquent, nous pourrions remplacer l'exemple précédent par le suivant :
SELECT object_name, counter_name, instance_name, cntr_value, cntr_type FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features';
Microsoft conseille qu'Azure SQL Data Warehouse et Parallel Data Warehouse renvoient une colonne supplémentaire, appelée pdw_node_id
, donc c'est quelque chose à garder à l'esprit aussi.
Exemple 3 – Rembourrage
Les trois premières colonnes utilisent un type de données de nchar(128) . Cela peut entraîner le remplissage de beaucoup d'espaces blancs à droite du texte.
Pour éliminer cet espace blanc supplémentaire, vous pouvez utiliser le RTRIM()
fonction (ou la fonction TRIM()
fonction si vous préférez) sur les trois premières colonnes :
SELECT RTRIM(object_name) AS Object, RTRIM(counter_name) AS Counter, RTRIM(instance_name) AS Instance, cntr_value, cntr_type FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features';
Documentation Microsoft
Voici des liens vers la documentation pertinente sur le site Web de Microsoft :
- Documentation pour
sys.dm_os_performance_counters
voir - Pour une présentation des objets et des compteurs pouvant être utilisés par le Moniteur système pour surveiller l'activité des ordinateurs exécutant une instance de SQL Server, consultez Utiliser des objets SQL Server.
- Présentation des vues de gestion dynamique du système.
- Fonctionnalités obsolètes du moteur de base de données dans SQL Server 2017
- Fonctionnalités obsolètes du moteur de base de données dans SQL Server 2016 (identiques à la liste SQL Server 2017)