本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用擴展事件與 Amazon RDS Microsoft SQL 服務器
您可以使用 Microsoft SQL 伺服器中的延伸事件來擷取伺服器用 Amazon RDS 的偵錯和疑難排解資訊。SQL延伸事件會取代 Microsoft 已淘汰的SQL追蹤和伺服器效能分析工具。擴充事件類似於分析工具追蹤,但對所追蹤的事件具有更細微的控制。Amazon SQL 伺服器版本 2016 及更新版本支援延伸事件RDS。如需詳細資訊,請參閱 Microsoft 文件中的擴充事件概觀
伺服器版 Amazon RDS 中具有主使用者權限的使用者,會自動開啟延伸事SQL件。
限制與建議
在SQL伺服器上RDS使用擴充事件時,會套用下列限制:
-
擴充事件僅支援 Enterprise 和 Standard 版本。
-
您無法變更預設的擴充事件工作階段。
-
請務必將工作階段記憶體分區模式設定為
NONE
。 -
工作階段事件保留模式可以是
ALLOW_SINGLE_EVENT_LOSS
或ALLOW_MULTIPLE_EVENT_LOSS
。 -
不支援 Windows (ETW) 目標的事件追蹤。
-
請確定檔案目標位於
D:\rdsdbdata\log
目錄中。 -
對於配對相符目標,請將
respond_to_memory_pressure
屬性設定為1
。 -
信號緩衝區目標記憶體不能大於 4 MB。
-
不支援下列動作:
-
debug_break
-
create_dump_all_threads
-
create_dump_single_threads
-
-
下列版本及更新版本支援此
rpc_completed
事件:15.0.4083.2、14.0.3370.1、13.0.5865.1、12.0.6433.1、11.0.7507.2。
在SQL伺服器上RDS設定延伸事件
在 [SQL伺RDS服器] 上,您可以設定延伸事件工作階段的某些參數值。下表描述了可設定的參數。
參數名稱 | 描述 | RDS預設值 | 最小值 | 最大值 |
---|---|---|---|---|
xe_session_max_memory |
指定要配置給工作階段用於事件緩衝的記憶體數量上限。此值對應於事件工作階段的 max_memory 設定。 |
4 MB | 4 MB | 8 MB |
xe_session_max_event_size |
指定大型事件允許的記憶體大小上限。此值對應於事件工作階段的 max_event_size 設定。 |
4 MB | 4 MB | 8 MB |
xe_session_max_dispatch_latency |
指定傳送至擴充事件工作階段目標之前,事件在記憶體中緩衝的時間長度。此值對應於事件工作階段的 max_dispatch_latency 設定。 |
30 秒 | 1 秒鐘 | 30 秒 |
xe_file_target_size |
指定檔案目標的大小上限。此值對應於檔案目標的 max_file_size 設定。 |
100 MB | 10 MB | 1 GB |
xe_file_retention |
指定事件工作階段之檔案目標產生的檔案保留時間 (以天為單位)。 | 7 天 | 0 天 | 7 天 |
注意
設定xe_file_retention
為零會在SQL伺服器釋放這些檔案的鎖定之後,自動移除 .xel 檔案。每當 .xel 檔案達到 xe_file_target_size
中設定的大小限制時,就會釋放鎖定。
您可以使用 rdsadmin.dbo.rds_show_configuration
存放的程序來顯示這些參數的目前值。例如,使用下列SQL陳述式來檢視的目前設定xe_session_max_memory
。
exec rdsadmin.dbo.rds_show_configuration 'xe_session_max_memory'
您可以使用 rdsadmin.dbo.rds_set_configuration
存放的程序來對其進行修改。例如,使用下列SQL陳述式設定xe_session_max_memory
為 4 MB。
exec rdsadmin.dbo.rds_set_configuration 'xe_session_max_memory', 4
異地同步備份部署的考量
當您在主要資料庫執行個體上建立擴充事件工作階段時,它不會傳播到待命複本。您可以容錯移轉並在新的主要資料庫執行個體上建立擴充事件工作階段。或者,您可以移除並重新新增異地同步備份組態,將擴充事件工作階段傳播到待命複本。RDS停止待命複本上的所有非預設延伸事件工作階段,以便這些工作階段不會耗用待命時的資源。因此,待命複本成為主要資料庫執行個體之後,請務必手動啟動新主要資料庫執行個體上的擴充事件工作階段。
注意
這種方法同時適用於「Always On 可用性群組」和「資料庫鏡像」。
您也可以使用 SQL Server Agent 工作來追蹤待命複本,並在待命複本成為主要複本時啟動工作階段。例如,在SQL伺服器代理程式作業步驟中使用下列查詢,重新啟動主要資料庫執行個體上的事件工作階段。
BEGIN IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE' AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE' AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1) ) BEGIN IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1') ALTER EVENT SESSION xe1 ON SERVER STATE=START IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2') ALTER EVENT SESSION xe2 ON SERVER STATE=START END END
如果這些工作階段處於停止狀態,此查詢會在主要資料庫執行個體上重新啟動事件工作階段 xe1
和 xe2
。您也可以將具有便利間隔的排程新增至此查詢。
查詢擴充的事件檔案
您可以使用SQL伺服器管理 Studio 或sys.fn_xe_file_target_read_file
函數來檢視使用檔案目標之擴充事件中的資料。有關此功能的更多信息,請參閱 Microsoft 文檔中的 sys.fn_xe_file_target_read_file
延伸事件檔案目標只能將檔案寫入SQL伺服器RDS的D:\rdsdbdata\log
目錄。
例如,使用下列SQL查詢列出名稱開頭為之擴充事件工作階段之所有檔案的內容xe
。
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);