扩展事件 - rpc_completed

时间:2015-11-16 14:21:52

标签: sql-server extended-events

我仍然对扩展事件不熟悉,但我认为我需要进入它,因为它更加详细。我正在尝试在rpc_completed事件上设置一个扩展事件,跟踪持续时间为5秒或更长的proc调用。我使用New Session设置了事件(已在下面编写脚本)并测试它我打开了SSMS连接,我创建了一个内置WAIT FOR DELAY为10秒的测试proc。所以我预计这会出现在观看实时数据中,但是当我执行测试过程 - 它没有出现在观看实时数据视图中时,我甚至删除了过滤的持续时间,但仍然没有“观看实时数据视图”的结果“任何想法可能是错的 我在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

任何指针都会很棒

谢谢。

2 个答案:

答案 0 :(得分: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

此致 Dinko Fabricni

答案 1 :(得分: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

watch live data with duration