You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何追踪从门户运行的阻塞其他进程的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:22:49