sys.dm_external_script_execution_stats

適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 受控執行個體

逐資料列傳回各種類型的外部指令碼要求。 外部腳本要求會依支援的外部指令碼語言分組。 每個已註冊的外部腳本函式都會產生一個資料列。 除非由父進程傳送,否則不會記錄任意外部腳本函式,例如 rxExec

注意

只有在您已安裝並啟用支援外部腳本執行的功能時,才能使用此動態管理檢視 (DMV)。 如需詳細資訊,請參閱 SQL Server 2016 中的 R Services、 SQL Server 2017 和更新版本中 的機器學習服務(R、Python)和 Azure SQL 受控實例機器學習服務

資料行名稱 資料類型 描述
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 都支援外部語言,而外部腳本要求則由機器學習服務處理。

針對 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';

另請參閱