Reporting services 跟踪报告使用情况

Reporting services 跟踪报告使用情况,reporting-services,reportingservices-2005,Reporting Services,Reportingservices 2005,有没有一种简单的方法可以跟踪谁在SSRS 2005中运行给定的报告,以及他们在什么时候运行该报告?我们在SSRS实施中有大约80份报告,并且正在尝试看看是否有任何报告可以安全地放在牧场上。如果我们能够很容易地看出哪些报告没有被使用,这将对我们有所帮助。有什么想法吗?您可以使用执行日志监控报表的使用情况。请检查这个 您还可以运行查询以查找报表使用情况。在这个链接中查看Maz的回复 干杯我总是发现报告日志有点难以使用。Reporting services将其所有活动的记录保存在报告数据库中名为Exe

有没有一种简单的方法可以跟踪谁在SSRS 2005中运行给定的报告,以及他们在什么时候运行该报告?我们在SSRS实施中有大约80份报告,并且正在尝试看看是否有任何报告可以安全地放在牧场上。如果我们能够很容易地看出哪些报告没有被使用,这将对我们有所帮助。有什么想法吗?

您可以使用执行日志监控报表的使用情况。请检查这个

您还可以运行查询以查找报表使用情况。在这个链接中查看Maz的回复


干杯

我总是发现报告日志有点难以使用。Reporting services将其所有活动的记录保存在报告数据库中名为ExecutionLog的表中


我有几个报告,我用它们来查询这个表,这样你就可以知道实际使用的是什么报告,以及谁是最重的用户

我知道这个问题太老了,有胡子,但是下面的代码将列出每个报告一次,以及它上次运行的时间。我强烈建议您创建一个名为“过时报告”的新文件夹,并将旧报告移到该文件夹中,而不是将其删除。这将消除混乱,但仍保持可用性,以防会计部门追查您的报告,他们显然需要每3.26年运行一次

与RankedReports 像 选择ReportID, 时间起点, 用户名, 按ReportID顺序按TimeStart DESC按iRank在分区上排序 从dbo.ExecutionLog t1 参加 目录t2 在t1.ReportID=t2.ItemID上 选择t2.Name作为ReportName, t1.TimeStart, t1.UserName, t2.道路, t1.ReportID 来自RankedReports t1 参加 目录t2 在t1.ReportID=t2.ItemID上 其中t1.iRank=1 按t1.TimeStart订购;
下面是一些关于生成报告的好建议和查询

例如,如果要查看最常用的报告,可以执行以下操作:

选择COUNTName作为ExecutionCount, 名称 SUMTimeDataRetrieval作为TimeDataRetrievalSum, SUMTimeProcessing作为TimeProcessingSum, SUMTimeRendering作为TimeRenderingSum, SUMByteCount作为ByteCountSum, SUM[RowCount]作为RowCountSum 从选择TimeStart, 目录类型, 目录名称, 时间数据检索, 时间处理, 时间渲染, 字节数, [行数] 从目录 内连接 行刑日志 在Catalog.ItemID=ExecutionLog.ReportID上 其中Type=2 作为RE 按名称分组 按COUNTName DESC排序, 名称
需要注意的一点是,默认情况下,执行日志只保存2个月的数据。您可以使用ExecutionLogDaysKept服务器属性控制此行为,请参阅。

此SQL还将为您提供数据源、用户和请求类型:

按LogEntryId选择订单上的行号作为Id,LogEntryId, r、 名称为报告名称,r.路径为报告路径,c2.名称为数据源, 替换C2.连接字符串';Unicode=True',作为连接字符串, SUBSTRINGr.Path,2,LENr.Path-LENr.Name-2作为文件夹路径, 例如用户名,例如格式,例如时间处理,例如时间渲染,例如[行计数], 将ex.TimeStart转换为日期作为TimeStart, DATEPART hour,例如作为StartHour的TimeStart, DATEPART分钟,例如TimeStart作为StartMinute, 案例 当ex.RequestType=0时,则为“交互式” 当ex.RequestType=1时,则为“订阅” 当ex.RequestType=2时,则“刷新缓存” else“未知”结束请求类型, u、 用户名为CreatedBy, 例身份 从ExecutionLogStorage ex nolock-执行日志 在ex.ReportID=r.ItemID和r.Type=2-report上连接目录nolock r 将数据源ds与ds.ItemID=r.ItemID上的nolock连接起来-报告到连接链接 将select ItemID、Name、SUBSTRINGContent、CHARINDEX、Content+15、CHARINDEX、Content-CHARINDEX、Content-15作为ConnectString连接起来 从中选择ItemID、Name、CONVERTNVARCHARMAX、CONVERTXML、CONVERTVARBINARYMAX、Content As Content 从带有nolock的目录,其中类型=5 x ds.Link上的c2=c2.ItemID-连接 在u.UserID=r.CreatedByID上左加入用户u
-如果仅搜索报表和文件夹,则取消注释这对于轻松轻松的报表非常有用,但您仅限于服务器存储的历史记录(我相信是3个月),并且报表数据库的安全性仅限于某些授权用户。尽管如此,这是一个简单的第一步,可以让你开始。我把它升级纯粹是为了参考会计部门要求的晦涩难懂的报告。。。有太多的时候,我得到了不到24小时的通知,要重新开发一些没人知道的东西@据我所知,Russell Fox的执行日志中没有
从父报表调用的任何子报表的框架。如果这是真的,我可能最终也会淘汰子报告。。有没有关于如何从查询中排除活动子报表的想法?@Bonzay-这是一个困难的问题,但我只是通过相应地命名报表来处理:MainReportName\u sub\u whattthesubdoes。以名称对报告进行编号也有助于实现这一点,并且可以更轻松地按报告编号进行搜索:DailyFinance9427\u Sub\u QtrTotal。然后你可以在t1.iRank=1和ReportName不象“%\u Sub\uux%”的地方找到它。我想你到wrox的链接断了。我试着找到它,但失败了。看起来是这样的。我不知道他们是否在那里组织了论坛,这就是为什么我在答案中加入了一个示例。更新了从2017@FistOfFury-太棒了,我怎么没想到呢?
USE ReportServer
SELECT c.Name AS ItemName
    ,  CASE c.Type
        WHEN 1 THEN 'Folder'
        WHEN 2 THEN 'Report'
        WHEN 3 THEN 'Resource'
        WHEN 4 THEN 'Linked Report'
        WHEN 5 THEN 'Data Source'
        ELSE CAST(c.Type AS VARCHAR(100))
        END AS ItemType
    ,  c.Path AS ItemPath
    ,  ( SELECT TOP 1 TimeStart FROM dbo.ExecutionLog t1 WHERE t1.ReportID = c.ItemID ORDER BY TimeStart DESC ) AS LastRunDate
    ,  ( SELECT TOP 1 UserName FROM dbo.ExecutionLog t1 WHERE t1.ReportID = c.ItemID ORDER BY TimeStart DESC ) AS LastUser
 FROM Catalog AS c WITH (NOLOCK)
 WHERE 1=1
    --AND c.Type IN (1,2)