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 Services(数据库内)处理。 在 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 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';