sql >> Database >  >> RDS >> Sqlserver

De verouderde functies in een SQL Server-instantie weergeven met behulp van T-SQL

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)

  1. Postgres-verbinding is gesloten fout in Spring Boot

  2. Sql-query voor boomtabel

  3. Hoe cbrt() werkt in PostgreSQL

  4. Einde van ondersteuning voor SQL Server 2008 &2008 R2