sql >> データベース >  >> RDS >> Sqlserver

T-SQLを使用してSQLServerインスタンスの非推奨機能を一覧表示する方法

    SQL Serverでは、sys.dm_os_performance_countersを使用できます。 SQLServerの現在のインスタンスで非推奨として指定された機能のリストを返すシステム動的管理ビュー。

    非推奨の機能のみを返すには、ビューをSQLServer:非推奨の機能オブジェクトのみにフィルターします。

    このビューには、SQLServerが最後に起動してから廃止された各機能が検出された回数を一覧表示するカウンターも含まれています。これは、アプリケーションが非推奨の機能をまだ使用しているかどうかを識別するのに役立ちます。

    これをSQLServerで実行するには、VIEW SERVER STATEが必要です。 許可。

    例1-基本的な使用法

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

    これをSQLServer2019インスタンスで実行すると、254行になるため、ここではリストしません。 SQL Server 2017インスタンスでは、253行を取得します。

    結果を特定の2行だけに絞り込むと、次のようになる可能性があります。

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

    結果:

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

    MicrosoftのWebサイトには、SQL Server 2017で非推奨となったデータベースエンジン機能の完全なリストと、非推奨としてマークされた機能に対して実行する必要のある推奨アクションがあります。このリストは、SQLServer2016のリストと同じです。

    例2–アプリケーションを介したビューの使用

    sys.dm_os_performance_countersを使用している場合 アプリケーションで表示する場合は、アスタリスクのワイルドカード(*)を使用しないでください。 )システム動的管理ビューおよび関数からすべての列を返す(Microsoftのアドバイスに従って)。このような場合、すべての列を返す場合は、クエリに各列名を含めることをお勧めします。

    したがって、前の例を次のように変更できます。

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

    Microsoftは、AzureSQLデータウェアハウスとParallelDataWarehouseがpdw_node_idという追加の列を返すことをお勧めします。 、それも覚えておくべきことです。

    例3–パディング

    最初の3列は、 nchar(128)のデータ型を使用します 。これにより、テキストの右側に多くの空白が埋め込まれる可能性があります。

    この余分な空白を削除するには、RTRIM()を使用できます。 関数(またはTRIM() 必要に応じて機能)最初の3列:

    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ドキュメント

    MicrosoftWebサイトの関連ドキュメントへのリンクは次のとおりです。

    • sys.dm_os_performance_countersのドキュメント 表示
    • SQL Serverのインスタンスを実行しているコンピューターのアクティビティを監視するためにSystemMonitorが使用できるオブジェクトとカウンターの概要については、「SQLServerオブジェクトの使用」を参照してください。
    • システム動的管理ビューの概要。
    • SQLServer2017で廃止されたデータベースエンジン機能
    • SQL Server 2016で廃止されたデータベースエンジン機能(SQL Server 2017リストと同じ)

    1. postgresql:md5メッセージダイジェストのデータ型?

    2. 次のSELECT式で列エイリアスを使用できないのはなぜですか?

    3. MySQLでテーブルのピボットを解除する方法

    4. MySQLで日、月、年を返す