In SQL Server kunt u de sys.dm_os_performance_counters
. gebruiken weergave dynamisch systeembeheer om een lijst te retourneren van de functies die zijn aangemerkt als verouderd in het huidige exemplaar van SQL Server.
Als u alleen de verouderde functies wilt retourneren, filtert u de weergave op alleen het object SQLServer:Deprecated Features.
De weergave bevat ook een teller die het aantal keren vermeldt dat elke verouderde functie is aangetroffen sinds SQL Server voor het laatst is gestart. Dit kan handig zijn om te bepalen of uw toepassing nog steeds verouderde functies gebruikt.
Om dit op SQL Server uit te voeren, is VIEW SERVER STATE
vereist toestemming.
Voorbeeld 1 – Basisgebruik
SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features';
Wanneer ik dat op mijn SQL Server 2019-instantie uitvoer, krijg ik 254 rijen, dus ik zal ze hier niet vermelden. Op mijn SQL Server 2017-instantie krijg ik 253 rijen.
Als ik de resultaten beperk tot slechts twee specifieke rijen, zou ik zoiets als dit kunnen krijgen:
SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features' AND instance_name LIKE '%timestamp%';
Resultaat:
+-------------------------------+----------------+------------------------------------+--------------+-------------+ | 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 | +-------------------------------+----------------+------------------------------------+--------------+-------------+
De Microsoft-website heeft een volledige lijst met verouderde database-engine-functies in SQL Server 2017, samen met de aanbevolen actie die u moet ondernemen voor elke functie die is gemarkeerd voor afschaffing. De lijst is dezelfde als die voor SQL Server 2016.
Voorbeeld 2 – De weergave gebruiken via een applicatie
Als u de sys.dm_os_performance_counters
. gebruikt bekijken in een toepassing, moet u het asterisk-jokerteken (*
) vermijden ) om alle kolommen van weergaven en functies voor dynamisch systeembeheer te retourneren (zoals geadviseerd door Microsoft). Als u in dergelijke gevallen alle kolommen wilt retourneren, is het beter om elke kolomnaam in de zoekopdracht op te nemen.
Daarom kunnen we het vorige voorbeeld in het volgende veranderen:
SELECT object_name, counter_name, instance_name, cntr_value, cntr_type FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features';
Microsoft adviseert dat Azure SQL Data Warehouse en Parallel Data Warehouse een extra kolom retourneren, genaamd pdw_node_id
, dus dat is ook iets om in gedachten te houden.
Voorbeeld 3 – Opvulling
De eerste drie kolommen gebruiken het gegevenstype nchar(128) . Dit kan ertoe leiden dat er veel witruimte wordt opgevuld aan de rechterkant van de tekst.
Om deze extra witruimte te elimineren, kunt u de RTRIM()
. gebruiken functie (of de TRIM()
functie als u wilt) op de eerste drie kolommen:
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-documentatie
Hier zijn links naar relevante documentatie op de Microsoft-website:
- Documentatie voor de
sys.dm_os_performance_counters
bekijken - Zie SQL Server-objecten gebruiken voor een overzicht van de objecten en tellers die door System Monitor kunnen worden gebruikt om activiteit te bewaken op computers waarop een exemplaar van SQL Server wordt uitgevoerd.
- Overzicht van weergaven van systeemdynamisch beheer.
- Verouderde Database Engine-functies in SQL Server 2017
- Verouderde Database Engine-functies in SQL Server 2016 (identiek aan de SQL Server 2017-lijst)