Sql-Server
SQL Server 擴展事件奇怪的行為試圖擷取來自 SAS 的語句
問題:當請求來自 SAS 時,我們創建的用於擷取針對某個表的查詢的擴展事件 (EE) 會話不起作用。
EE程式碼:
CREATE EVENT SESSION [TEST_Capture_Queries] ON SERVER ADD EVENT sqlserver.sql_statement_completed( ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_name,sqlserver.nt_username,sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.sql_text,sqlserver.username) WHERE ([sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%schema%table%'))), ADD EVENT sqlserver.sql_batch_completed( ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_name,sqlserver.nt_username,sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.sql_text,sqlserver.username) WHERE ([sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%schema%table%'))) ADD TARGET package0.event_file(SET filename=N'D:\Audit\TEST_Capture_Queries.xel',max_rollover_files=(10)) WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON) GO
我們看到使用 sp_whoisactive 用於源自 SAS 的 SQL 登錄:
SELECT * FROM schema.table
對於同一登錄,我們在 EE 文件中獲得的內容:
-- sql_statement_completed.sql_text EXEC sp_executesql N'set implicit_transactions off select USER_NAME() select usertype,type,name from systypes where usertype>=257' -- sql_batch_completed.batch_text EXEC sp_executesql N'set implicit_transactions off select USER_NAME() select usertype,type,name from systypes where usertype>=257'
我不是特別精通 SAS,但 EE 會話肯定會擷取引用schema.table的查詢(來自 SSMS 和應用伺服器) 。我想我錯過了一個事件,但試錯法尚未產生結果。我不想不得不塵埃落定並啟動 SQL Profiler,因此任何見解都會受到讚賞。
我錯過的事件:sqlserver.rpc_completed