1

我对扩展事件仍然很陌生,但我认为我需要进入它,因为它更详细。我正在尝试在 rpc_completed 事件上设置一个扩展事件,跟踪持续时间为 5 秒或更长时间的 proc 调用。我使用新会话设置事件(已在下面编写脚本)并测试它我打开了一个 SSMS 连接,我在其中创建了一个测试过程,该过程具有 10 秒的内置等待延迟。所以我希望这会出现在观看实时数据中,但是当我执行测试过程时 - 它没有出现在观看实时数据视图中,我什至删除了过滤的持续时间,但在“观看实时数据视图”中仍然没有结果" 任何想法我在 SQL 2014 本地机器实例上可能有什么问题,这里是脚本化的扩展事件。

CREATE EVENT SESSION [PRC_Completed_Test] 
ON SERVER ADD EVENT sqlserver.rpc_completed (SET collect_statement = (1)
ACTION(
 sqlserver.client_app_name
 , sqlserver.client_hostname
 , sqlserver.database_name
 , sqlserver.sql_text)
)
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 = OFF
)
GO

任何指针都会很棒

谢谢你。

4

2 回答 2

1

如果要在从 SSMS 运行查询时捕获事件,则需要捕获 sql_batch_completed。从应用程序捕获事件时使用 rpc_completed。

这是我使用的示例:

CREATE EVENT SESSION [Monitor Queries running longer than 5 seconds] ON SERVER 
ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1)
    ACTION(sqlserver.database_id,sqlserver.plan_handle)
    WHERE ([duration]>(5000000))),
ADD EVENT sqlserver.sql_batch_completed(
    ACTION(sqlserver.database_id,sqlserver.plan_handle)
    WHERE ([duration]>(5000000))) 
ADD TARGET package0.event_file(SET filename=N'C:\ExtendedEvents\Queries running longer than 5 seconds 2015-12-08.xel')
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=OFF)
GO

问候, 丁科·法布里尼

于 2015-12-08T09:03:01.270 回答
0

这是我用来查看从应用程序调用的 SP 的扩展事件会话。您可以通过右键单击 watch-live-data 视图找到持续时间并将该列添加到您所看到的内容中。这也会保存到文件目标,因此您可以根据需要对文件运行查询。此外,每次运行时,文件目标都将通过 max_rollover_files = 0 参数被覆盖。

CREATE EVENT SESSION [sp_search] ON SERVER 
ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1)
    ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_name,sqlserver.sql_text,sqlserver.username)
    WHERE ([sqlserver].[equal_i_sql_unicode_string]([sqlserver].[database_name],N'<enter database name>'))),
ADD EVENT sqlserver.rpc_starting(
    ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_name,sqlserver.sql_text,sqlserver.username)
    WHERE ([sqlserver].[equal_i_sql_unicode_string]([sqlserver].[database_name],N'<enter database name>')))
ADD TARGET package0.event_file(SET filename=N'c:\sp_capture.xel',max_file_size=(5),max_rollover_files=(0),metadatafile=N'c:\sp_capture.xem')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=5 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)
GO

观看持续时间的实时数据

于 2018-12-05T20:39:51.033 回答