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

另请参阅