In SQL Server die sys.dm_os_performance_counters
System Dynamic Management View gibt die vom Server verwalteten Leistungsindikatoren zurück.
Eines der vielen Dinge, die Sie mit sys.dm_os_performance_counters
tun können gibt eine Liste veralteter Funktionen in der aktuellen Instanz von SQL Server zurück. Sie können diese Liste auch verwenden, um zu sehen, wie oft eine veraltete Funktion seit dem Start von SQL Server verwendet wurde.
Dies ist wahrscheinlich der schnellste Weg, um herauszufinden, ob Sie eine veraltete Funktion in SQL Server verwenden.
Die Ansicht gibt eine Zeile pro Leistungsindikator zurück, der vom Server verwaltet wird. Das SQLServer:Deprecated Features-Objekt stellt einen Zähler bereit, um die als veraltet markierten Features zu überwachen. Es hat einen cntr_value
Spalte, die einen Verwendungszähler bereitstellt, der auflistet, wie oft das veraltete Feature seit dem letzten Start von SQL Server aufgetreten ist.
Daher können wir durch Ausführen einer Abfrage für diese Ansicht alle veralteten Funktionen zurückgeben, zusammen mit einer Zählung, wie oft jede seit dem letzten Start von SQL Server aufgetreten ist.
Beispiel 1 – Alle veralteten Funktionen zurückgeben, die seit dem Start von SQL Server aufgetreten sind
Wir können daher die folgende Abfrage verwenden, um alle veralteten Funktionen zu finden, die seit dem letzten Start von SQL Server aufgetreten sind, zusammen mit der Häufigkeit, mit der jedes Element aufgetreten ist:
SELECT RTRIM(instance_name) 'Feature', cntr_value 'Usage Count' FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features' AND cntr_value > 0;
Ergebnis:
+-----------------------------------+---------------+ | Feature | Usage Count | |-----------------------------------+---------------| | String literals as column aliases | 1 | | TIMESTAMP | 1 | | numbered_procedures | 1 | | sysdatabases | 3 | | sp_db_vardecimal_storage_format | 1 | | XP_API | 2 | +-----------------------------------+---------------+
Hier habe ich den RTRIM()
verwendet Funktion (Sie könnten auch TRIM()
verwenden ), um den weißen Bereich auf der rechten Seite des Features zu kürzen. Ich habe dies getan, weil der instance_name
Spalte verwendet einen nchar(128)
Datentyp, wodurch die Spalte auf 128 Zeichen aufgefüllt wird. Durch das Trimmen der Leerzeichen passt das Beispiel jetzt auf die Webseite, ohne dass horizontal gescrollt werden muss.
Beispiel 2 – Funktionen nach Namen zurückgeben
Wenn Sie an einer bestimmten Funktion interessiert sind, können Sie jederzeit anhand des Namens danach suchen:
SELECT TRIM(instance_name) 'Feature', cntr_value 'Usage Count' FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features' AND instance_name LIKE '%timestamp%';
Ergebnis:
+------------------------------------+---------------+ | Feature | Usage Count | |------------------------------------+---------------| | INSERT NULL into TIMESTAMP columns | 0 | | TIMESTAMP | 1 | +------------------------------------+---------------+
Weitere Details zu jeder veralteten Funktion
Die obige Methode ist eine nette schnelle Möglichkeit, um zu sehen, ob veraltete Funktionen noch in Ihrer Anwendung verwendet werden. Ein Nachteil ist, dass es nicht viele Informationen darüber liefert, was dagegen zu tun ist oder welche SQL-Anweisungen die veraltete Funktion enthalten, geschweige denn, welcher Benutzer sie ausgeführt hat.
Sie können Sitzungen mit erweiterten Ereignissen verwenden, um weitere Informationen zurückzugeben, z. B. die anstößigen SQL-Anweisungen, den Benutzer, der sie ausgeführt hat, die Uhrzeit der Ausführung und mehr. Sie können sogar alles in einer Protokolldatei erfassen, damit Sie später darauf zurückgreifen können. Ein Beispiel finden Sie unter Verwenden erweiterter Ereignisse zum Protokollieren veralteter Funktionen, die in einer SQL Server-Instanz verwendet werden.
Siehe auch Microsofts Artikel Deprecated Database Engine Features in SQL Server 2017 für Empfehlungen zum Umgang mit den einzelnen veralteten Elementen. Diese Liste ist genau die gleiche wie die für SQL Server 2016.