Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como listar os recursos obsoletos em uma instância do SQL Server usando T-SQL


No SQL Server, você pode usar o sys.dm_os_performance_counters exibição de gerenciamento dinâmico do sistema para retornar uma lista dos recursos designados como obsoletos na instância atual do SQL Server.

Para retornar apenas os recursos preteridos, filtre a exibição apenas para o objeto SQLServer:Recursos preteridos.

A exibição também inclui um contador que lista o número de vezes que cada recurso preterido foi encontrado desde a última inicialização do SQL Server. Isso pode ser útil para identificar se seu aplicativo ainda está usando algum recurso obsoleto.

Executar isso no SQL Server requer VIEW SERVER STATE permissão.


Exemplo 1 – Uso básico

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

Quando eu executo isso na minha instância do SQL Server 2019, recebo 254 linhas, então não vou listá-las aqui. Na minha instância do SQL Server 2017, recebo 253 linhas.

Se eu restringir os resultados a apenas duas linhas específicas, posso obter algo assim:
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       |
+-------------------------------+----------------+------------------------------------+--------------+-------------+

O site da Microsoft tem uma lista completa de recursos de mecanismo de banco de dados obsoletos no SQL Server 2017, juntamente com as ações recomendadas que você deve executar para qualquer recurso marcado para obsolescência. A lista é a mesma do SQL Server 2016.

Exemplo 2 – Usando a visualização por meio de um aplicativo


Se você estiver usando os sys.dm_os_performance_counters visualização em um aplicativo, você deve evitar usar o curinga asterisco (* ) para retornar todas as colunas das exibições e funções de gerenciamento dinâmico do sistema (conforme recomendado pela Microsoft). Nesses casos, se você quiser retornar todas as colunas, é melhor incluir o nome de cada coluna na consulta.

Portanto, poderíamos alterar o exemplo anterior para o seguinte:
SELECT
  object_name, 
  counter_name, 
  instance_name, 
  cntr_value, 
  cntr_type
FROM sys.dm_os_performance_counters   
WHERE object_name = 'SQLServer:Deprecated Features';

A Microsoft aconselha que o Azure SQL Data Warehouse e o Parallel Data Warehouse retornem uma coluna extra, chamada pdw_node_id , então isso é algo a ter em mente também.

Exemplo 3 – Preenchimento


As três primeiras colunas usam um tipo de dados de nchar(128) . Isso pode fazer com que muitos espaços em branco sejam preenchidos à direita do texto.

Para eliminar este espaço em branco extra, você pode usar o RTRIM() função (ou a função TRIM() função se preferir) nas três primeiras colunas:
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';

Documentação da Microsoft


Aqui estão os links para a documentação relevante no site da Microsoft:
  • Documentação para os sys.dm_os_performance_counters ver
  • Para obter uma visão geral dos objetos e contadores que podem ser usados ​​pelo System Monitor para monitorar a atividade em computadores que executam uma instância do SQL Server, consulte Usar objetos do SQL Server.
  • Visão geral das visualizações de gerenciamento dinâmico do sistema.
  • Recursos do mecanismo de banco de dados obsoletos no SQL Server 2017
  • Recursos do mecanismo de banco de dados obsoletos no SQL Server 2016 (idênticos à lista do SQL Server 2017)