微软 BI SSRS 报表执行日志监控实践

浏览: 3388

前言

经常见到有些童鞋遇到SSRS报表查看慢的问题,却又无从下手,那么本文就记录一下利用报表的执行日志监视报表的执行性能的一次实践。

环境

操作系统:Windows Server 2008 R2 Standard

数据库:Microsoft SQL Server 2008 R2 Enterprise Edition (64-bit)

执行日志说明:

执行日志记录包含有关报表执行统计信息、审核、性能诊断和优化的信息。

执行日志是存储在报表服务器数据库(ReportServer)的表(ExecutionLogStorage)中以及视图(ExecutionLog1, ExecutionLog2, ExecutionLog3)中。

视图列说明

 列	        说明
InstanceName 处理请求的报表服务器实例的名称。如果您的环境具有多个报表服务器,则可以对 InstanceName 分布进行分析,以便监视并确定您的网络负载平衡器是否按预期跨多个报表服务器分布请求。
ItemPath 存储报表或报表项的位置的路径。
UserName 用户标识符。
ExecutionID 与请求关联的内部标识符。同一用户会话的请求共享相同的执行 ID。
RequestType 可能的值:
• 交互
• 订阅
分析按 RequestType=Subscription 筛选的日志数据和按 TimeStart 排序的数据可揭示大量使用订阅的时间段,这样您可能要将某些报表订阅修改为其他时间。
格式 呈现格式。
Parameters 用于执行报表的参数值。
ItemAction 可能的值:
• Render
• 排序
• BookMarkNavigation
• DocumentNavigation
• GetDocumentMap
• Findstring
• Execute
• RenderEdit
TimeStart 指示报表进程的持续时段的开始时间和结束时间。
TimeEnd
TimeDataRetrieval 用于检索数据的毫秒数。
TimeProcessing 用于处理报表的毫秒数。
TimeRendering 用于呈现报表的毫秒数。
数据源 报表执行的源。可能的值:
• Live
• 高速缓存
• Snapshot
• 历史记录
• AdHoc
• Session
• Rdce
Cache:指示缓存的执行,例如,数据集查询不实时执行。
AdHoc:指示基于动态生成的报表模型的钻取报表,或在客户端上预览的报表生成器报表(使用报表服务器进行处理和呈现)。
Session:指示已建立的会话内的跟进请求。例如,初始请求为查看第一页,跟进请求为使用当前会话状态导出到 Excel。
Rdce 指示报表定义自定义扩展插件。在执行报表时,RDCE 自定义扩展插件可以在将某一报表定义传递到处理引擎前动态自定义该报表定义。
状态 状态(rsSuccess 或错误代码;如果发生多个错误,则只记录第一个)。
ByteCount 所呈现的报表的大小(字节)。
RowCount 查询返回的结果行数。
AdditionalInfo 包含与执行有关的附加信息的 XML 属性包。对于每一行,内容可以不同。

操作

       报表执行日志一般只在ReportServer数据库中存储60天(需要更改的话请在SSMS中连接 Reporting Servers 引擎,然后在属性中修改)。在这里建立一个日志数据库,新建几张表用于存储相关信息,然后使用SSIS包每天重ReportServer数据库中抽取到日志数据库中

1、 新建数据库,取名叫:RSExecutionLog;

2、 建立数据库表,使用sql脚本文件(Createtables.sql)创建相关表,后边会提供下载;

3、 抽取数据,执行SSIS包(RSExecutionLog_Update.dtsx),抽取数据到RSExecutionLog的新建的日志数据库中,SSIS包后边提供下载

4、 部署相关的日志报表,用于查看,后边提供下载。

相关报表:

Clipboard Image.png

最后的结果 比如:

查看各个报表执行成功平均使用时间,执行了多少次,数据加载时间多少?数据处理时间多少?报表呈现时间多少,那么你对报表执行的快慢了解就有所依据啦!

Clipboard Image.png

还有其它报表就不在这里展现啦,大家可以自己动手试试,更多的关心的内容等你在日志里去挖掘!

相关资料下载:

推荐 7
本文由 郑大鹏 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

14 个评论

给力呀,学习。
可以有你的联系方式吗
dp.zheng@qq.com
dp.zheng@qq.com
总算明白了属性的含义。但是如果TimeProcessing大,该如何处理呢?
这个估计是你的报表阶段的计算太多导致的,尽量在数据检索阶段就算好。
只有月份格式的转换表达式和序号。

在SSRS开发端预览的时候都挺快的,部署后通过网页打开就慢了。
,E.TimeDataRetrieval*1.0/1000 AS TimeDataRetrieval
,E.TimeProcessing*1.0/1000 AS TimeProcessing
,E.TimeRendering*1.0/1000 AS TimeRendering

上述三个时间分别是0.150000 1.215000 0.120000

问题困扰我很久了,求进一步指点。

报表说明:这个是明细数据报表页面,数据量比较大,一个月7000条数据,一页100条,一条数据1000个字符以内。

另外,翻页的时候也挺慢的,在设计端预览的话很快。
我把所有表达式都删掉后,processing时间并没有明显变化

processing时间是否与服务器CPU/内存等有关呢?

另外,我的2008R2没有装补丁,补丁是否必须?
跟CPU/内存等 服务器性能肯定有一定关系,
补丁应该没有影响
你试试把数据行 减少一点试试
还有就是:同一个报表,不同的人不同时间打开时processing和rendering时间差异很大。这个你有遇到过吗
没有
本地预览很快,远程连接比较慢

我咨询了公司IT外包人员,他认为是网络问题造成的
本地预览很快,远程连接比较慢

我咨询了公司IT外包人员,他认为是网络问题造成的
如果你会看 http的请求时间,可以看看

要回复文章请先登录注册