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

SQL Serverインスタンスでまだ使用されている廃止された機能を見つける最も簡単な方法(T-SQLの例)

    SQL Serverでは、sys.dm_os_performance_counters システム動的管理ビューは、サーバーによって維持されているパフォーマンスカウンターを返します。

    sys.dm_os_performance_countersでできる多くのことの1つ SQLServerの現在のインスタンスで廃止された機能のリストを返します。このリストを使用して、SQLServerの起動後に非推奨の機能が使用された回数を確認することもできます。

    これは、SQLServerで非推奨の機能を使用しているかどうかを確認するための最も簡単な方法である可能性があります。

    ビューは、サーバーによって維持されているパフォーマンスカウンターごとに行を返します。 SQLServer:Deprecated Featuresオブジェクトは、非推奨として指定された機能を監視するためのカウンターを提供します。 cntr_valueがあります 列。SQLServerが最後に起動してから廃止された機能が検出された回数を一覧表示する使用回数を提供します。

    したがって、このビューに対してクエリを実行することで、SQL Serverが最後に起動してから、廃止されたすべての機能と、各機能が検出された回数を返すことができます。

    例1-SQLServerの起動以降に発生したすべての非推奨機能を返す

    したがって、次のクエリを使用して、SQL Serverが最後に起動してから検出されたすべての非推奨機能と、各アイテムが検出された回数を見つけることができます。

    SELECT
      RTRIM(instance_name) 'Feature', 
      cntr_value 'Usage Count'
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'SQLServer:Deprecated Features'
    AND cntr_value > 0;
    

    結果:

    +-----------------------------------+---------------+
    | Feature                           | Usage Count   |
    |-----------------------------------+---------------|
    | String literals as column aliases | 1             |
    | TIMESTAMP                         | 1             |
    | numbered_procedures               | 1             |
    | sysdatabases                      | 3             |
    | sp_db_vardecimal_storage_format   | 1             |
    | XP_API                            | 2             |
    +-----------------------------------+---------------+
    

    ここでは、RTRIM()を使用しました 関数(TRIM()を使用することもできます )フィーチャーの右側の空白をトリミングします。 instance_nameのため、これを行いました 列はnchar(128)を使用します データ型。列が128文字に埋め込まれます。空白をトリミングすることで、水平方向のスクロールを必要とせずに、例をWebページに収めることができます。

    例2–名前で機能を返す

    興味のある特定の機能がある場合は、いつでも名前で検索できます:

    SELECT 
      TRIM(instance_name) 'Feature', 
      cntr_value 'Usage Count'
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'SQLServer:Deprecated Features'
    AND instance_name LIKE '%timestamp%';
    

    結果:

    +------------------------------------+---------------+
    | Feature                            | Usage Count   |
    |------------------------------------+---------------|
    | INSERT NULL into TIMESTAMP columns | 0             |
    | TIMESTAMP                          | 1             |
    +------------------------------------+---------------+
    

    廃止された各機能の詳細

    上記の方法は、廃止された機能がアプリケーションでまだ使用されているかどうかを確認するための優れた簡単な方法です。欠点の1つは、それに対して何をすべきか、またはどのSQLステートメントに非推奨の機能が含まれているか、さらにはどのユーザーがそれを実行したかについて、多くの情報が提供されないことです。

    拡張イベントセッションを使用して、問題のあるSQLステートメント、それを実行したユーザー、実行時刻などの詳細情報を返すことができます。後で参照できるように、すべてをログファイルにキャプチャすることもできます。例については、拡張イベントを使用してSQLServerインスタンスで使用されている非推奨の機能をログに記録するを参照してください。

    非推奨の各アイテムの処理方法に関する推奨事項については、Microsoftの記事「SQLServer2017の非推奨のデータベースエンジン機能」も参照してください。このリストは、SQLServer2016のリストとまったく同じです。


    1. org.hibernate.internal.util.config.ConfigurationException:cfg.xmlリソースが見つかりませんでした[/HibernateTest/src/hibernate.cfg.xml]

    2. MySQLデータベースが破損しています...どうすればよいですか?

    3. データベース管理者向けのトップMySQLブログおよびWebサイト

    4. MySQL8.0の新しい分析ウィンドウ関数のレビュー