sys.dm_external_script_execution_stats

适用于: SQL Server 2016 (13.x) 及更高版本 Azure SQL 托管实例

为每种类型的外部脚本请求返回一行。 外部脚本请求由受支持的外部脚本语言分组。 为每个已注册的外部脚本函数生成一行。 除非由父进程(例如 ) rxExec发送,否则不会记录任意外部脚本函数。

注意

仅当已安装并启用了支持外部脚本执行的功能时,此动态管理视图 (DMV) 才可用。 有关详细信息,请参阅 SQL Server 2016 中的 R ServicesSQL 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 Services (数据库内) 处理。 在 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 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';

另请参阅