我仍然对扩展事件不熟悉,但我认为我需要进入它,因为它更加详细。我正在尝试在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
任何指针都会很棒
谢谢。
答案 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