我已经添加了Extended事件来跟踪sql调用,这使我的系统变慢,导致出现Timeout异常等
CREATE EVENT SESSION [longrunning_statements] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
WHERE ([duration]>(2000000) AND [database_id]=(9)))
ADD TARGET package0.event_file(SET filename=N'c:\capture\xe_longrunning_statement.xel',metadatafile=N'c:\capture\xe_longrunning_statement.xem')
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
但是我注意到它没有注册Entity Framework的sql服务器更新/读取查询/程序调用,而仅记录了使用SSMS运行的sql查询。
任何想法都值得赞赏
更新:
我使用EF6.1,我认为该批处理用于保存数据。
答案 0 :(得分:1)
我将捕获应用程序/ API发出的查询/存储过程的sqlserver.sql_statement_completed
和sqlserver.sql_batch_completed
,而不是捕获sqlserver.rpc_completed
。
如果这不起作用,则删除过滤器(或至少删除duration
过滤器(如Andrey在评论中建议的那样)可能会使我们更深入地了解为何未捕获查询。