sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo enumerar las características obsoletas en una instancia de SQL Server usando T-SQL

En SQL Server, puede usar sys.dm_os_performance_counters vista de administración dinámica del sistema para devolver una lista de las características designadas como obsoletas en la instancia actual de SQL Server.

Para devolver solo las características obsoletas, filtre la vista solo al objeto SQLServer:Deprecated Features.

La vista también incluye un contador que muestra la cantidad de veces que se encontró cada característica obsoleta desde que se inició SQL Server por última vez. Esto puede ser útil para identificar si su aplicación todavía usa funciones obsoletas.

Ejecutar esto en SQL Server requiere VIEW SERVER STATE permiso.

Ejemplo 1:uso básico

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

Cuando ejecuto eso en mi instancia de SQL Server 2019, obtengo 254 filas, por lo que no las enumeraré aquí. En mi instancia de SQL Server 2017, obtengo 253 filas.

Si reduzco los resultados a solo dos filas específicas, podría obtener algo como esto:

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

Resultado:

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

El sitio web de Microsoft tiene una lista completa de funciones del motor de base de datos en desuso en SQL Server 2017, junto con las acciones recomendadas que debe tomar para cualquier función marcada como obsoleta. La lista es la misma que la de SQL Server 2016.

Ejemplo 2:usar la vista a través de una aplicación

Si está utilizando sys.dm_os_performance_counters vista en una aplicación, debe evitar usar el comodín asterisco (* ) para devolver todas las columnas de las vistas y funciones de administración dinámica del sistema (según lo recomendado por Microsoft). En tales casos, si desea devolver todas las columnas, es mejor incluir cada nombre de columna dentro de la consulta.

Por tanto, podríamos cambiar el ejemplo anterior por el siguiente:

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

Microsoft recomienda que Azure SQL Data Warehouse y Parallel Data Warehouse devuelvan una columna adicional, llamada pdw_node_id , así que eso también es algo a tener en cuenta.

Ejemplo 3:relleno

Las primeras tres columnas usan un tipo de datos de nchar(128) . Esto puede hacer que se rellenen muchos espacios en blanco a la derecha del texto.

Para eliminar este espacio en blanco adicional, puede usar RTRIM() (o la función TRIM() función si lo prefiere) en las tres primeras columnas:

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

Documentación de Microsoft

Aquí hay enlaces a la documentación relevante en el sitio web de Microsoft:

  • Documentación para sys.dm_os_performance_counters ver
  • Para obtener una descripción general de los objetos y contadores que puede usar System Monitor para monitorear la actividad en equipos que ejecutan una instancia de SQL Server, consulte Uso de objetos de SQL Server.
  • Descripción general de las vistas de administración dinámica del sistema.
  • Características obsoletas del motor de base de datos en SQL Server 2017
  • Características obsoletas del motor de base de datos en SQL Server 2016 (idénticas a la lista de SQL Server 2017)