适用于: SQL Server 2016 (13.x) 及更高版本
Azure SQL 托管实例
了解如何使用扩展事件来监视和疑难解答与 SQL Server 机器学习服务、SQL Server Launchpad 以及 Python 或 R 作业外部脚本有关的操作。
SQL Server 机器学习服务的扩展事件
若要查看与 SQL Server 机器学习服务相关的事件列表,请在 SQL Server Management Studio(SSMS)、 Visual Studio Code 的 MSSQL 扩展、 sqlcmd 或你最喜欢的 T-SQL 查询工具中运行以下查询。
SELECT o.name AS event_name, o.description
FROM sys.dm_xe_objects o
JOIN sys.dm_xe_packages p
ON o.package_guid = p.guid
WHERE o.object_type = 'event'
AND p.name = 'SQLSatellite';
有关如何扩展事件的详细信息,请参阅扩展事件工具。
特定于机器学习服务的其他事件
其他扩展事件可用于与 SQL Server 机器学习服务相关并由其使用的组件,例如 SQL Server Launchpad 和 BXLServer,以及启动 Python 或 R 运行时的附属进程。 这些额外的扩展事件是从外部流程中触发的;因此,必须使用外部实用工具捕获它们。
有关如何操作的详细信息,请参阅从外部进程收集事件一节。
扩展事件表
| 事件 | 说明 | 说明 |
|---|---|---|
| connection_accept | 在接受新连接时发生。 此事件用于记录所有连接尝试。 | |
| 启动失败 | 启动失败。 | 表示错误。 |
| satellite_abort_connection | 终止连接记录 | |
| satellite_abort_received | 通过卫星连接接收中止消息时触发。 | |
| satellite_abort_sent | 当通过卫星链路发送中止消息时触发。 | |
| 卫星身份验证完成 | 当 TCP 或命名管道连接的身份验证完成时触发。 | |
| 卫星授权完成 | 对基于 TCP 或命名管道的连接的授权完成时触发。 | |
| satellite_cleanup | 卫星调用清理时触发。 | 仅从外部进程触发。 请参阅有关从外部进程收集事件的说明。 |
| satellite_data_chunk_sent | 卫星连接完成发送单个数据区块时触发。 | 发送区块时,此事件报告发送的行数、列数、所用的 SNI 数据包数目以及所用时间(以毫秒为单位)。 这些信息可帮助你了解传递不同类型的数据时花费了多长时间,以及使用了多少个数据包。 |
| 卫星数据接收完成 | 当通过卫星连接接收到某个查询所需的全部数据时触发。 | 仅从外部进程触发。 请参阅有关从外部进程收集事件的说明。 |
| 卫星数据发送完成 | 通过卫星连接发送会话所需的所有数据时触发。 | |
| 开始发送卫星数据 | 数据传输开始时触发。 | 数据传输在发送第一个数据块之前就开始了。 |
| 卫星错误 | 用于跟踪 sql 卫星错误 | |
| satellite_invalid_sized_message | 消息大小无效 | |
| satellite_message_coalesced | 用于跟踪网络层的消息合并 | |
| satellite_message_ring_buffer_record | 消息环形缓冲区记录 | |
| 卫星消息摘要 | 有关消息传送的摘要信息 | |
| 卫星消息版本不匹配 | 消息的版本字段不匹配 | |
| 卫星_消息传递 | 用于跟踪消息传送事件(绑定、取消绑定等) | |
| 卫星_部分消息 | 用于跟踪网络层的部分消息 | |
| satellite_schema_received | 当架构消息被 SQL 接收并读取时触发。 | |
| satellite_schema_sent | 通过卫星发送架构消息时触发。 | 仅从外部进程触发。 请参阅有关从外部进程收集事件的说明。 |
| satellite_service_start_posted | 在向 launchpad 发布服务启动消息时触发。 | 这会通知 Launchpad 启动外部进程,并包含新会话的 ID。 |
| 收到卫星意外消息 | 收到非预期消息时触发。 | 表示错误。 |
| 堆栈跟踪 | 请求进行进程的内存转储时发生。 | 表示错误。 |
| trace_event | 用于跟踪目的 | 这些事件可以包含 SQL Server、Launchpad 和外部进程跟踪消息。 这包括从 R 到 stdout 和 stderr 的输出。 |
| launchpad_launch_start | 当发射台开始发射卫星时触发。 | 仅从 Launchpad 触发。 请参阅关于从 launchpad.exe 收集事件的说明。 |
| launchpad_resume_sent | Launchpad 已启动卫星并将恢复消息发送到 SQL Server 时触发。 | 仅从 Launchpad 触发。 请参阅有关从 launchpad.exe 收集事件的说明。 |
| satellite_data_chunk_sent | 卫星连接完成发送单个数据区块时触发。 | 包含列数、行数、数据包数量,以及发送数据区块所用的时间等信息。 |
| 卫星会话 ID 不匹配 | 消息的会话 ID 不是预期值 |
从外部进程收集事件
SQL Server 机器学习服务启动在 SQL Server 进程外部运行的一些服务。 若要捕获与这些外部进程相关的事件,必须创建一个事件跟踪配置文件,并将该文件放在与进程的可执行文件相同的目录中。
重要
自 SQL Server 2019 起,隔离机制已发生更改。 因此,需要为存储事件跟踪配置文件的目录授予适当的权限。 有关如何设置这些权限的详细信息,请参阅 Windows 上 SQL Server 2019 中的“文件权限”部分:机器学习服务的隔离更改。
SQL Server Launchpad
若要捕获与 Launchpad 相关的事件,请将 .xml 文件放在 SQL Server 实例的 Binn 目录中 。 在默认安装中,此目录为:
C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\MSSQL\Binn。BXLServer 是使用外部脚本语言支持 SQL 可扩展性的附属进程,如 R 和 Python。 为每个外部语言实例启动单独的 BxlServer 实例。
若要捕获与 BXLServer 相关的事件,请将 .xml 文件放在 R 或 Python 安装目录中 。 在默认安装中,此目录为:
R:
C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64。Python:
C:\Program Files\Microsoft SQL Server\MSSQL_version_number.MSSQLSERVER\PYTHON_SERVICES\Lib\site-packages\revoscalepy\rxLibs。
此配置文件的名称必须与可执行文件相同,并使用“[名称].xevents.xml”的格式。 换而言之,这些文件的名称如下所示:
Launchpad.xevents.xmlbxlserver.xevents.xml
配置文件自身具有以下格式:
<?xml version="1.0" encoding="utf-8"?>
<event_sessions>
<event_session name="[session name]" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">
<description owner="you">Xevent for launchpad or bxl server.</description>
<event package="SQLSatellite" name="[XEvent Name 1]" />
<event package="SQLSatellite" name="[XEvent Name 2]" />
<target package="package0" name="event_file">
<parameter name="filename" value="[SessionName].xel" />
<parameter name="max_file_size" value="10" />
<parameter name="max_rollover_files" value="10" />
</target>
</event_session>
</event_sessions>
- 若要配置跟踪,请编辑会话名称 占位符、文件名的占位符 () 和要捕获的事件的名称(如
[SessionName].xel、[XEvent Name 1])。 - 可以出现任意数量的“事件包”标签,只要名称属性正确,这些标签都会被收集。
示例:捕获 Launchpad 事件
下面的示例显示了 Launchpad 服务的事件跟踪定义:
<?xml version="1.0" encoding="utf-8"?>
<event_sessions>
<event_session name="sqlsatelliteut" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">
<description owner="hay">Xevent for sql tdd runner.</description>
<event package="SQLSatellite" name="launchpad_launch_start" />
<event package="SQLSatellite" name="launchpad_resume_sent" />
<target package="package0" name="event_file">
<parameter name="filename" value="launchpad_session.xel" />
<parameter name="max_file_size" value="10" />
<parameter name="max_rollover_files" value="10" />
</target>
</event_session>
</event_sessions>
- 将 .xml 文件放在 SQL Server 实例的 Binn 目录中 。
- 此文件必须命名为
Launchpad.xevents.xml。
示例:捕获 BXLServer 事件
下面的示例显示了 BXLServer 可执行文件的事件跟踪定义。
<?xml version="1.0" encoding="utf-8"?>
<event_sessions>
<event_session name="sqlsatelliteut" maxMemory="1" dispatchLatency="1" MaxDispatchLatency="2 SECONDS">
<description owner="hay">Xevent for sql tdd runner.</description>
<event package="SQLSatellite" name="satellite_abort_received" />
<event package="SQLSatellite" name="satellite_authentication_completion" />
<event package="SQLSatellite" name="satellite_cleanup" />
<event package="SQLSatellite" name="satellite_data_receive_completion" />
<event package="SQLSatellite" name="satellite_data_send_completion" />
<event package="SQLSatellite" name="satellite_data_send_start" />
<event package="SQLSatellite" name="satellite_schema_sent" />
<event package="SQLSatellite" name="satellite_unexpected_message_received" />
<event package="SQLSatellite" name="satellite_data_chunk_sent" />
<target package="package0" name="event_file">
<parameter name="filename" value="satellite_session.xel" />
<parameter name="max_file_size" value="10" />
<parameter name="max_rollover_files" value="10" />
</target>
</event_session>
</event_sessions>
- 将 .xml 文件放在与 BXLServer 可执行文件相同的目录中 。
- 此文件必须命名为
bxlserver.xevents.xml。