sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man listar de föråldrade funktionerna i en SQL Server-instans med T-SQL

I SQL Server kan du använda sys.dm_os_performance_counters system dynamisk hanteringsvy för att returnera en lista över funktioner som har angetts som föråldrade i den aktuella instansen av SQL Server.

Om du bara vill returnera de föråldrade funktionerna, filtrerar du vyn till bara objektet SQLServer:Föråldrade funktioner.

Vyn innehåller också en räknare som visar hur många gånger varje utfasad funktion har påträffats sedan SQL Server senast startade. Detta kan vara användbart för att identifiera om din applikation fortfarande använder några föråldrade funktioner eller inte.

Att köra detta på SQL Server kräver VIEW SERVER STATE tillstånd.

Exempel 1 – Grundläggande användning

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

När jag kör det på min SQL Server 2019-instans får jag 254 rader, så jag kommer inte att lista dem här. På min SQL Server 2017-instans får jag 253 rader.

Om jag begränsar resultaten till bara två specifika rader kan jag få något sånt här:

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

Resultat:

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

Microsofts webbplats har en fullständig lista över föråldrade databasmotorfunktioner i SQL Server 2017, tillsammans med rekommenderade åtgärder du bör vidta för alla funktioner som är markerade för utfasning. Listan är densamma som för SQL Server 2016.

Exempel 2 – Använda vyn via en applikation

Om du använder sys.dm_os_performance_counters visa i ett program bör du undvika att använda asterisk-jokertecknet (* ) för att returnera alla kolumner från systemets dynamiska hanteringsvyer och funktioner (enligt råd från Microsoft). I sådana fall, om du vill returnera alla kolumner, är det bättre att inkludera varje kolumnnamn i frågan.

Därför kan vi ändra det föregående exemplet till följande:

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

Microsoft rekommenderar att Azure SQL Data Warehouse och Parallel Data Warehouse returnerar en extra kolumn, kallad pdw_node_id , så det är också något att tänka på.

Exempel 3 – Utfyllnad

De tre första kolumnerna använder datatypen nchar(128) . Detta kan göra att mycket blanksteg fylls ut till höger om texten.

För att eliminera detta extra blanksteg kan du använda RTRIM() funktionen (eller TRIM() funktion om du föredrar) i de tre första kolumnerna:

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

Här är länkar till relevant dokumentation på Microsofts webbplats:

  • Dokumentation för sys.dm_os_performance_counters visa
  • För en översikt över de objekt och räknare som kan användas av System Monitor för att övervaka aktivitet i datorer som kör en instans av SQL Server, se Använd SQL Server-objekt.
  • Översikt över System Dynamic Management Views.
  • Utfasade databasmotorfunktioner i SQL Server 2017
  • Utfasade databasmotorfunktioner i SQL Server 2016 (identiskt med SQL Server 2017-listan)

  1. Provisioning MySQL/MariaDB Vault Database Secrets Engine med Terraform

  2. Viktig PostgreSQL-övervakning - Del 2

  3. How to_char() Fungerar i PostgreSQL

  4. Star Trek 3D schackdatamodell