Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come elencare le funzionalità deprecate in un'istanza di SQL Server utilizzando T-SQL

In SQL Server puoi usare sys.dm_os_performance_counters visualizzazione a gestione dinamica del sistema per restituire un elenco delle funzionalità designate come deprecate nell'istanza corrente di SQL Server.

Per restituire solo le funzionalità deprecate, filtra la visualizzazione solo sull'oggetto SQLServer:Deprecated Features.

La visualizzazione include anche un contatore che elenca il numero di volte in cui ogni funzionalità deprecata è stata rilevata dall'ultimo avvio di SQL Server. Questo può essere utile per identificare se la tua applicazione sta ancora utilizzando funzionalità obsolete.

L'esecuzione su SQL Server richiede VIEW SERVER STATE permesso.

Esempio 1 – Utilizzo di base

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

Quando lo eseguo sulla mia istanza di SQL Server 2019, ottengo 254 righe, quindi non le elencherò qui. Nella mia istanza di SQL Server 2017, ottengo 253 righe.

Se restringo i risultati a due sole righe specifiche, potrei ottenere qualcosa del genere:

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

Risultato:

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

Il sito Web Microsoft contiene un elenco completo delle funzionalità del motore di database obsolete in SQL Server 2017, insieme alle azioni consigliate da intraprendere per qualsiasi funzionalità contrassegnata per la deprecazione. L'elenco è lo stesso di SQL Server 2016.

Esempio 2:utilizzo della vista tramite un'applicazione

Se stai utilizzando sys.dm_os_performance_counters vista in un'applicazione, dovresti evitare di utilizzare il carattere jolly asterisco (* ) per restituire tutte le colonne dalle viste e dalle funzioni di gestione dinamica del sistema (come consigliato da Microsoft). In questi casi, se vuoi restituire tutte le colonne, è meglio includere ogni nome di colonna all'interno della query.

Pertanto, potremmo modificare l'esempio precedente nel seguente:

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

Microsoft consiglia che Azure SQL Data Warehouse e Parallel Data Warehouse restituiscano una colonna aggiuntiva, denominata pdw_node_id , quindi è qualcosa da tenere a mente.

Esempio 3:riempimento

Le prime tre colonne utilizzano un tipo di dati nchar(128) . Ciò potrebbe causare il riempimento di molti spazi bianchi a destra del testo.

Per eliminare questo spazio extra, puoi usare RTRIM() funzione (o il TRIM() funzione se preferisci) sulle prime tre colonne:

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';

Documentazione Microsoft

Di seguito sono riportati i collegamenti alla documentazione pertinente sul sito Web Microsoft:

  • Documentazione per sys.dm_os_performance_counters visualizza
  • Per una panoramica degli oggetti e dei contatori che possono essere utilizzati da Monitor di sistema per monitorare l'attività nei computer che eseguono un'istanza di SQL Server, vedere Utilizzare gli oggetti di SQL Server.
  • Panoramica delle viste di gestione dinamica del sistema.
  • Funzionalità di Motore di database obsolete in SQL Server 2017
  • Funzionalità di Motore di database obsolete in SQL Server 2016 (identiche all'elenco di SQL Server 2017)