如何追踪从门户运行的阻塞其他进程的SSRS报表SPID
定位阻塞其他进程的SSRS具体报表实例
以下是几种直接有效的方法,帮你追踪到手动运行的具体报表:
查询SSRS执行日志视图
SSRS的ReportServer数据库内置了执行日志视图,能关联报表路径、执行用户和时间。针对你的情况,可通过SPID的活跃时间和服务账户匹配:SELECT el.ReportPath, el.UserName AS 报表发起用户, el.TimeStart AS 执行开始时间, DATEDIFF(SECOND, el.TimeStart, el.TimeEnd) AS 执行时长(秒), sp.session_id AS 阻塞SPID FROM ReportServer.dbo.ExecutionLog3 el JOIN sys.dm_exec_sessions sp ON sp.login_time BETWEEN el.TimeStart AND el.TimeEnd WHERE sp.session_id = <你的阻塞SPID> AND sp.login_name = '你的SSRS服务账户名' AND el.TimeStart >= DATEADD(MINUTE, -60, GETDATE()) -- 缩小时间范围,提升查询效率 ORDER BY el.TimeStart DESC注意:
ExecutionLog3适用于SSRS 2016及以上版本,旧版本请改用ExecutionLog或ExecutionLog2视图。查看SSRS服务跟踪日志
SSRS默认在安装目录的LogFiles文件夹生成跟踪日志(文件名格式如ReportServerService_YYYYMMDD.log),日志会记录每一次报表执行的详细信息,包括:- 报表完整路径
- 发起执行的用户
- 执行开始/结束时间
- 关联的数据库连接信息
直接搜索服务账户名和SPID活跃的时间窗口,就能找到对应的报表条目。
分析SPID执行的SQL语句
通过动态管理视图查看阻塞SPID正在执行的SQL,有时能从SQL内容反向推断对应报表:SELECT dest.text AS 执行的SQL语句 FROM sys.dm_exec_requests der CROSS APPLY sys.dm_exec_sql_text(der.sql_handle) dest WHERE der.session_id = <你的阻塞SPID>如果SQL包含特定业务参数或表名,结合SSRS门户的报表查询逻辑,就能定位到目标报表。
检查SSRS门户的最近运行记录
若报表是手动运行,可让发起用户查看SSRS门户的「最近查看的报表」列表,结合执行时间筛选,快速锁定可能的报表。
内容的提问来源于stack exchange,提问作者user9192401
相关产品推荐
相关产品推荐

