sys.dm_external_script_execution_stats
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL Managed Instance
外部スクリプト要求の種類ごとに 1 つの行を返します。 外部スクリプト要求は、サポートされている外部スクリプト言語でグループ化されます。 登録された外部スクリプト関数ごとに 1 行が生成されます。 rxExec
などの親プロセスによって送信されない限り、任意の外部スクリプト関数は記録されません。
Note
この動的管理ビュー (DMV) は、外部スクリプトの実行をサポートする機能をインストールして有効にした場合にのみ使用できます。 詳細については、SQL Server 2016 の R Services、SQL Server 2017 以降の Machine Learning Services (R、Python)、 azure SQL Managed Instance Machine Learning Services を参照してください。
列名 | データ型 | 説明 |
---|---|---|
language |
nvarchar | 登録されている外部スクリプト言語の名前です。 各外部スクリプトは、スクリプト要求で言語を指定して、関連付けられているランチャーを開始する必要があります。 |
counter_name |
nvarchar | 登録されている外部スクリプト関数の名前です。 Null 許容ではありません。 |
counter_value |
integer | 登録されている外部スクリプト関数がサーバーで呼び出されたインスタンスの合計数です。 この値は、機能がインスタンスにインストールされた時刻から始まる累積値であり、リセットすることはできません。 |
アクセス許可
SQL Server 2019 (15.x) 以前のバージョンの場合、サーバーに対する VIEW SERVER STATE 権限が必要です。
SQL Server 2022 (16.x) 以降のバージョンでは、サーバーに対する VIEW SERVER PERFORMANCE STATE 権限が必要です。
外部スクリプトを実行するユーザーには、EXECUTE ANY EXTERNAL SCRIPT という追加のアクセス許可が必要です。 ただし、この DMV は、このアクセス許可なしで管理者が使用できます。
解説
この DMV は、SQL Server で提供される新しい外部スクリプト実行機能の全体的な使用状況を監視するために、内部テレメトリ用に提供されます。 登録されている外部スクリプト関数が呼び出されるたびにスタート パッドがディスクベースのカウンターを増分すると、テレメトリ サービスが開始します。
一般に、パフォーマンス カウンターは、それを生成したプロセスがアクティブな間だけ有効です。 そのため、DMV のクエリでは、実行を停止したサービスの詳細なデータを表示できません。 たとえば、ランチャーが外部スクリプトを実行してもすぐに完了した場合、従来の DMV ではデータが表示されない可能性があります。
そのため、この DMV によって追跡されるカウンターは実行され続け、インスタンスがシャットダウンされた場合でも、 sys.dm_external_script_requests
の状態はディスクへの書き込みを使用して保持されます。
カウンター値
SQL Server 2016 (13.x) では、サポートされている唯一の外部言語は R であり、外部スクリプト要求は R Services (データベース内) によって処理されます。 SQL Server 2017 (14.x) 以降のバージョンおよび Azure SQL Managed Instance では、R と Python の両方がサポートされている外部言語であり、外部スクリプト要求は Machine Learning Services によって処理されます。
R の場合、この DMV は、インスタンスで行われた R 呼び出しの数を追跡します。 たとえば、 rxLinMod
が呼び出され、並列で実行される場合、カウンターは 1 ずつインクリメントされます。
R 言語の場合、 counter_name フィールドに表示されるカウンターの値は、登録されている ScaleR 関数の名前を表します。 counter_value フィールドの値は、特定の ScaleR 関数を呼び出したインスタンスの累積数を表します。
Python の場合、この DMV は、インスタンスで行われた Python 呼び出しの数を追跡します。
この数は、機能がインスタンスにインストールされて有効になったときに開始され、状態を維持するファイルが管理者によって削除または上書きされるまで累積されます。 そのため、通常、 counter_valueの値をリセットすることはできません。 セッション、カレンダーの時間、またはその他の間隔で使用状況を監視する必要がある場合は、カウントをテーブルに取得することをお勧めします。
R での外部スクリプト関数の登録
R は任意のスクリプトをサポートしており、R コミュニティは、それぞれ独自の関数とメソッドを備えた何千ものパッケージを提供します。 ただし、この DMV では、SQL Server 2016 (13.x) R Services にインストールされている ScaleR 関数のみが監視されます。
これらの関数の登録は、機能のインストール時に実行され、登録された関数を追加または削除することはできません。
例
サーバーで実行される R スクリプトの数を表示する
次の例は、R 言語の外部スクリプト実行の累積数を表示します。
SELECT counter_name, counter_value
FROM sys.dm_external_script_execution_stats
WHERE language = 'R';
サーバーで実行されている Python スクリプトの数を表示する
次の例では、Python 言語の外部スクリプト実行の累積数を表示します。
SELECT counter_name, counter_value
FROM sys.dm_external_script_execution_stats
WHERE language = 'Python';