Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment répertorier les fonctionnalités obsolètes dans une instance SQL Server à l'aide de T-SQL

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)