適用於:SQL Server 2016 (13.x) 和更新版本
Azure SQL 受控執行個體
了解如何使用擴充事件來監視與 SQL Server 機器學習服務、SQL Server Launchpad 和 Python 或 R 作業外部指令碼相關的操作及針對其進行疑難排解。
SQL Server 機器學習服務的擴充事件
若要檢視與 SQL Server 機器學習 Services 相關的事件清單,請在 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 執行階段的附屬處理序) 使用。 這些額外的延伸事件是由外部處理序觸發;因此,必須使用外部公用程式來擷取。
如需有關如何執行此動作的詳細資訊,請參閱從外部處理序收集事件一節。
擴充事件表
| 事件 | 描述 | 附註 |
|---|---|---|
| 接受連線 | 當接受新的連線時發生。 此事件是用來記錄所有的連線嘗試。 | |
| 啟動失敗 | 啟動失敗。 | 表示發生錯誤。 |
| 中止衛星連線 | 中止連接記錄 | |
| 已收到衛星中止訊號 | 當透過衛星連線收到中止訊息時觸發。 | |
| 衛星中止訊息已送出 | 當透過衛星連線傳送中止訊息時觸發。 | |
| 衛星驗證完成 | 完成透過 TCP 或具名管道連線的驗證時引發。 | |
| 衛星_授權_完成 | 透過 TCP 或具名管道進行的連線完成授權時觸發。 | |
| 衛星清理 | 當衛星呼叫清理程序時觸發。 | 僅會由外部處理序觸發。 請參閱從外部程序收集事件的說明。 |
| satellite_data_chunk_sent | 當衛星連線完成傳送一個資料區塊時觸發。 | 事件會回報已傳送的資料列數、資料行數、已使用的 SNI 封包數,以及傳送區塊時所經過的時間 (以毫秒為單位)。 此資訊可協助您了解傳送不同類型的資料花費多少時間,以及使用多少封包。 |
| 衛星資料接收完成 | 當透過衛星連線收到查詢所需的所有資料時,便會觸發。 | 僅由外部處理序觸發。 請參閱從外部處理序收集事件的說明。 |
| 衛星資料傳送完成 | 當工作階段所需的所有資料都透過衛星連線傳送時觸發。 | |
| 開始傳送衛星資料 | 當資料傳輸開始時觸發。 | 資料傳輸會在傳送第一個資料區塊之前開始。 |
| 衛星錯誤 | 用於追查 SQL Satellite 錯誤 | |
| 衛星訊息大小無效 | 訊息大小無效 | |
| 衛星訊息合併 | 用於追蹤網路層中的訊息合併 | |
| 衛星訊息環形緩衝區記錄 | 訊息環形緩衝區記錄 | |
| 衛星訊息摘要 | 訊息傳遞的相關摘要資訊 | |
| 衛星訊息版本不相符 | 訊息的版本欄位不相符 | |
| 衛星_傳訊 | 用來追蹤訊息事件 (繫結、解除繫結等) | |
| 衛星部分訊息 | 用來追蹤網路層的部分訊息 | |
| satellite_schema_received | 當 SQL 收到並讀取結構描述訊息時觸發。 | |
| satellite_schema_sent | 當衛星傳送結構描述訊息時觸發。 | 僅由外部處理序觸發。 請參閱從外部處理序收集事件的說明。 |
| 已發布衛星服務啟動通知 | 當服務啟動訊息發布到 Launchpad 時觸發。 | 這會告知 Launchpad 啟動外部處理序,並包含新工作階段的識別碼。 |
| 已收到非預期的衛星訊息 | 收到未預期的訊息時觸發。 | 表示發生錯誤。 |
| stack_trace | 在要求處理序的記憶體傾印時發生。 | 表示發生錯誤。 |
| trace_event | 用於追蹤用途 | 這些事件可以包含 SQL Server、Launchpad 和外部程序追蹤訊息。 包含從 R 輸出至 stdout 和 stderr。 |
| launchpad_launch_start | 當 Launchpad 開始發射衛星時觸發。 | 只能從啟動控制板引發。 請參閱從 launchpad.exe 收集事件的操作說明。 |
| launchpad_resume_sent | 當 Launchpad 啟動衛星並將恢復訊息傳送至 SQL Server 時觸發。 | 僅能從啟動台觸發。 請參閱關於從 launchpad.exe 收集事件的說明。 |
| satellite_data_chunk_sent | 當衛星連線完成傳送一個資料區塊時觸發。 | 包含有關資料行數目、資料列數目、封包數目及傳送區塊所經過之時間的資訊。 |
| satellite_sessionId_mismatch | 訊息的工作階段識別碼不符合預期 |
從外部處理序收集事件
SQL Server 機器學習服務會啟動一些在 SQL Server 處理序外執行的服務。 若要擷取這些外部處理序的相關事件,您必須建立事件追蹤組態檔,並將該檔案放在處理序可執行檔所在的相同目錄中。
重要
從 SQL Server 2019 開始,隔離機制已經變更。 因此您必須授與事件追蹤設定檔所在目錄的適當權限。 如需有關如何設定這些權限的詳細資訊,請參閱 Windows 上 SQL Server 2019 中的檔案權限區段:機器學習服務的隔離變更
SQL Server 啟動板
若要擷取與 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 安裝目錄中。 在預設的安裝中,這會是:
答:
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>
- 若要設定追蹤,請編輯 session name 預留位置、檔案名稱的預留位置 (
[SessionName].xel),以及您想要擷取之事件的名稱 (例如[XEvent Name 1]、[XEvent Name 1])。 - 可出現任意數量的
標記,只要 name 屬性正確,就都會被收集。
範例:擷取 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。