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)