sys.dm_external_script_execution_stats
適用於: SQL Server 2016 (13.x) 和更新版本 Azure SQL 受控執行個體
逐資料列傳回各種類型的外部指令碼要求。 外部文稿要求會依支援的外部腳本語言分組。 每個已註冊的外部腳本函式都會產生一個數據列。 除非由父行程傳送,否則不會記錄任意外部腳稿函式,例如 rxExec
。
注意
只有在您已安裝並啟用支援外部腳本執行的功能時,才能使用此動態管理檢視 (DMV)。 如需詳細資訊,請參閱 SQL Server 2016 中的 R Services、SQL Server 2017 和更新版本中的 機器學習 Services (R、Python)和 Azure SQL 受控執行個體 機器學習 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 中提供之新外部腳本執行功能的整體使用量。 當 LaunchPad 執行 ,並在每次呼叫已註冊的外部腳本函式時,遞增磁碟型計數器時,遙測服務就會啟動。
一般而言,只要產生的進程作用中,性能計數器才有效。 因此,DMV 上的查詢無法顯示已停止執行之服務的詳細數據。 例如,如果啟動器執行外部腳本,但尚未快速完成,則傳統的 DMV 可能不會顯示任何數據。
因此,此 DMV 所追蹤的計數器會持續執行,而的狀態 sys.dm_external_script_requests
會使用寫入磁碟來保留,即使實例已關閉也一樣。
計數器值
在 SQL Server 2016 (13.x) 中,唯一支援的外部語言是 R,而外部腳本要求是由 R 服務 (資料庫內) 處理。 在 SQL Server 2017 (14.x) 和更新版本中,在 Azure SQL 受控執行個體 上,R 和 Python 都支援外部語言,而外部腳本要求則由 機器學習 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 服務一起安裝的 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';