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

如何获取SSRS 2016报表的监控统计数据?

SSRS 2016 报表监控实现方案

一、通过SSRS服务器原生获取统计数据

SSRS 2016 的 ReportServer 数据库内置了多个日志视图,直接查询就能拿到大部分你需要的监控数据:

1. 用户打开报表的数量

利用 ExecutionLog3 视图,按报表路径和用户名分组统计访问次数:

SELECT 
    ReportPath,
    UserName,
    COUNT(*) AS 访问次数
FROM ReportServer.dbo.ExecutionLog3
GROUP BY ReportPath, UserName
ORDER BY 访问次数 DESC

2. 用户选择的参数

ExecutionLog3 的 Parameters 字段以XML格式存储用户提交的参数,用XML解析函数提取即可:

SELECT 
    ReportPath,
    UserName,
    TimeStart AS 访问时间,
    -- 提取第一个参数的名称和值,如需全部参数可改用XML节点遍历
    CAST(Parameters AS XML).value('(/Parameters/Parameter/Name)[1]', 'NVARCHAR(255)') AS 参数名称,
    CAST(Parameters AS XML).value('(/Parameters/Parameter/Value)[1]', 'NVARCHAR(MAX)') AS 参数值
FROM ReportServer.dbo.ExecutionLog3
WHERE Parameters IS NOT NULL

3. 报表加载耗时

ExecutionLog3 里的三个字段分别记录了报表执行的不同阶段耗时,相加就是总加载时间:

SELECT 
    ReportPath,
    UserName,
    TimeStart AS 访问时间,
    (TimeDataRetrieval + TimeProcessing + TimeRendering) AS 总加载耗时(毫秒)
FROM ReportServer.dbo.ExecutionLog3

4. 用户查看报表的时长

SSRS 原生日志不直接记录用户在浏览器的停留时长——它只追踪报表的执行、渲染环节,无法监控用户的页面停留行为,这部分需要自定义脚本补充。

二、自定义脚本补充监控(针对查看时长)

要获取用户查看报表的时长,可以在报表页面嵌入JavaScript脚本,记录页面加载和关闭/离开的时间差,再将数据写入自定义日志表:

  1. 嵌入脚本:可以修改SSRS的 ReportViewer.aspx 页面(注意备份,升级时可能被覆盖),或者在报表的页眉/页脚添加HTML内容插入脚本:
<script>
    const startTime = new Date().getTime();
    // 监听页面关闭/离开事件
    window.addEventListener('beforeunload', () => {
        const endTime = new Date().getTime();
        const duration = (endTime - startTime) / 1000; // 转换为秒
        // 发送数据到自定义接口(比如ASHX处理程序)
        const xhr = new XMLHttpRequest();
        xhr.open('POST', '/ReportServer/LogViewDuration.ashx', true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        // 传递报表路径、用户名、停留时长
        xhr.send(`reportPath=${encodeURIComponent(window.location.pathname)}&userName=${encodeURIComponent('<%= User.Identity.Name %>')}&duration=${duration}`);
    });
</script>
  1. 存储数据:创建一个自定义的ASHX处理程序或存储过程,接收脚本发送的数据,写入你自己的监控表(比如 ReportViewDuration),后续直接查询这个表就能拿到用户的查看时长。

注意:修改SSRS原生文件需谨慎,做好备份;同时要确保脚本的安全性,避免注入风险。

内容的提问来源于stack exchange,提问作者asmgx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:05:19