微软BI SSRS渐悟之统计报表访问次数

浏览: 3965

引言

今天一位朋友问到这样一样问题:SSRS报表如何统计报表的访问次数。愣过之后,细想一下,从开发的角度来审视这个问题。无非就是需要一个地方能够存储表示当前报表的变量和已访次数。每次用户访问的时候给这个变量的次数加1.从报表的生命周期来看,数据集是一个可以下手的地方。另外对SSRS自身数据库熟悉的同学,肯定不难想到报表的执行日志。

值得注意的是,以下两种方式,在刷新报表的时候,将是两次访问。对这个有要求的同学,那就需要另辟蹊径喽。

存储过程实现

step1、创建访问次数统计表

create table rs_access_times
(
id int identity(1,1) primary key, --主键
rt_name nvarchar(200) not null, --报表名称
access_times int default(0) --访问次数
)
go

step2、创建次数累加存储过程

create proc up_total_access_times
(
@rt_name nvarchar(200) --报表名称
)
as
begin
--第一次访问,初始化一条记录
if not exists(select * from rs_access_times where rt_name = @rt_name)
begin
insert into rs_access_times(rt_name,access_times) values(@rt_name,0)
end

--更新次数
update rs_access_times set access_times = access_times + 1 where rt_name = @rt_name

--返回最新次数
select access_times from rs_access_times where rt_name = @rt_name
end
go

step3、创建访问次数数据集



step4、呈现访问次数

添加页脚-右键“插入文本框”-添加“占位符”-表达式  =访问次数



每刷新一次,次数+1。


数据库的信息大家也可以看下


执行日志实现

通过执行日志实现,其实就省去了我们的步骤1和2.但是有几个问题大家要注意下:

1、我需要能够访问报表服务的数据库权限

2、需要在报表中添加报表数据库的链接

3、我们需要先认识一下执行日志表结构

Catalog 目录表 ItemID字段为主键GUID, Name字段为名称,用来存储报表文件夹、数据源、数据集、报表等的名称。

ExecutionLogStorage 执行日志表 ReportID字段为Catalog表ItemID表外键(逻辑),每刷新一次,生成一条新数据。

4、注意,在设计阶段预览报表是不会在这个数据库生成数据的,要发布之后看效果

清楚以上信息,我们就可以实现功能了,思路就是关联两个表,统计执行次数。(其他字段暂可不必了解)

step1、创建报表数据库链接

相信大家都会,在此不复述。

step2、创建访问次数数据集

select count(*) 
from ExecutionLogStorage els
join Catalog c on els.ReportID = c.ItemID
where c.Name = @rt_name

其他配置,参见第一种方式即可。

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

2 个评论

关注,收藏下,耀东有段时间没写啊。
悟

回复 梁勇

嗯 这段时间学习IS,也没有遇到什么问题。

要回复文章请先登录注册