Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So listen Sie die veralteten Features in einer SQL Server-Instanz mit T-SQL auf

In SQL Server können Sie die sys.dm_os_performance_counters verwenden systemdynamische Verwaltungsansicht, um eine Liste der Funktionen zurückzugeben, die in der aktuellen Instanz von SQL Server als veraltet gekennzeichnet sind.

Um nur die veralteten Features zurückzugeben, filtern Sie die Ansicht nur auf das Objekt SQLServer:Deprecated Features.

Die Ansicht enthält auch einen Zähler, der auflistet, wie oft jedes veraltete Feature seit dem letzten Start von SQL Server aufgetreten ist. Dies kann hilfreich sein, um festzustellen, ob Ihre Anwendung noch veraltete Funktionen verwendet.

Die Ausführung auf SQL Server erfordert VIEW SERVER STATE Erlaubnis.

Beispiel 1 – Grundlegende Verwendung

SELECT *
FROM sys.dm_os_performance_counters   
WHERE object_name = 'SQLServer:Deprecated Features';

Wenn ich das auf meiner SQL Server 2019-Instanz ausführe, erhalte ich 254 Zeilen, also werde ich sie hier nicht auflisten. Auf meiner SQL Server 2017-Instanz erhalte ich 253 Zeilen.

Wenn ich die Ergebnisse auf nur zwei bestimmte Zeilen einschränke, bekomme ich vielleicht so etwas:

SELECT *
FROM sys.dm_os_performance_counters   
WHERE object_name = 'SQLServer:Deprecated Features'
AND instance_name LIKE '%timestamp%';

Ergebnis:

+-------------------------------+----------------+------------------------------------+--------------+-------------+
| 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       |
+-------------------------------+----------------+------------------------------------+--------------+-------------+

Auf der Microsoft-Website finden Sie eine vollständige Liste veralteter Datenbankmodulfunktionen in SQL Server 2017 sowie empfohlene Maßnahmen, die Sie für alle als veraltet gekennzeichneten Funktionen ergreifen sollten. Die Liste ist die gleiche wie die für SQL Server 2016.

Beispiel 2 – Verwenden der Ansicht über eine Anwendung

Wenn Sie die sys.dm_os_performance_counters verwenden in einer Anwendung anzuzeigen, sollten Sie die Verwendung des Sternchen-Platzhalters (*) vermeiden ), um alle Spalten aus systemdynamischen Verwaltungsansichten und -funktionen zurückzugeben (wie von Microsoft empfohlen). Wenn Sie in solchen Fällen alle Spalten zurückgeben möchten, ist es besser, jeden Spaltennamen in die Abfrage aufzunehmen.

Daher könnten wir das vorherige Beispiel wie folgt ändern:

SELECT
  object_name, 
  counter_name, 
  instance_name, 
  cntr_value, 
  cntr_type
FROM sys.dm_os_performance_counters   
WHERE object_name = 'SQLServer:Deprecated Features';

Microsoft weist darauf hin, dass Azure SQL Data Warehouse und Parallel Data Warehouse eine zusätzliche Spalte namens pdw_node_id zurückgeben , das sollten Sie also auch im Hinterkopf behalten.

Beispiel 3 – Polsterung

Die ersten drei Spalten verwenden den Datentyp nchar(128) . Dies kann dazu führen, dass rechts neben dem Text viel Leerraum aufgefüllt wird.

Um diesen zusätzlichen Leerraum zu eliminieren, können Sie RTRIM() verwenden Funktion (oder die TRIM() Funktion, wenn Sie es vorziehen) in den ersten drei Spalten:

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';

Microsoft-Dokumentation

Hier sind Links zu relevanter Dokumentation auf der Microsoft-Website:

  • Dokumentation für die sys.dm_os_performance_counters ansehen
  • Eine Übersicht über die Objekte und Leistungsindikatoren, die von System Monitor verwendet werden können, um Aktivitäten auf Computern zu überwachen, auf denen eine Instanz von SQL Server ausgeführt wird, finden Sie unter Verwenden von SQL Server-Objekten.
  • Übersicht über System Dynamic Management Views.
  • Veraltete Datenbankmodulfunktionen in SQL Server 2017
  • Veraltete Datenbankmodulfunktionen in SQL Server 2016 (identisch mit der Liste von SQL Server 2017)