50 reportingservices-2005 reporting-services
是否有一种简单的方法可以跟踪谁在SSRS 2005中运行给定的报告,以及他们在何时运行该报告?在我们的SSRS实施中,我们有大约80份报告,并且正在试图查看是否有任何我们可以放心地放弃牧场的报告.如果我们能够轻易地看到哪些报告没有被使用,那将有助于我们.有任何想法吗?
xan*_*xan 49
在下面的文章中,有一些很好的建议和查询可以生成报告.
例如,如果要查看最常用的报告,可以执行以下操作:
SELECT COUNT(Name) AS ExecutionCount,
Name,
SUM(TimeDataRetrieval) AS TimeDataRetrievalSum,
SUM(TimeProcessing) AS TimeProcessingSum,
SUM(TimeRendering) AS TimeRenderingSum,
SUM(ByteCount) AS ByteCountSum,
SUM([RowCount]) AS RowCountSum
FROM (SELECT TimeStart,
Catalog.Type,
Catalog.Name,
TimeDataRetrieval,
TimeProcessing,
TimeRendering,
ByteCount,
[RowCount]
FROM Catalog
INNER JOIN
ExecutionLog
ON Catalog.ItemID = ExecutionLog.ReportID
WHERE Type = 2
) AS RE
GROUP BY Name
ORDER BY COUNT(Name) DESC,
Name;
Run Code Online (Sandbox Code Playgroud)
需要注意的一点是,默认情况下,执行日志只能保留2个月的数据.您可以使用ExecutionLogDaysKeptserver属性控制此行为,请参阅此technet文章.
Rus*_*Fox 16
我知道这个问题太旧了,它有胡须,但下面的代码会在最后一次运行时列出每个报告一次.我强烈建议您创建一个名为"过时报告"的新文件夹,并在那里移动旧报告而不是删除它们.这将消除混乱,但仍然保留它们,以防会计部门跟踪你的报告,他们显然需要每3.26年运行一次.
WITH RankedReports
AS
(SELECT ReportID,
TimeStart,
UserName,
RANK() OVER (PARTITION BY ReportID ORDER BY TimeStart DESC) AS iRank
FROM dbo.ExecutionLog t1
JOIN
dbo.Catalog t2
ON t1.ReportID = t2.ItemID
)
SELECT t2.Name AS ReportName,
t1.TimeStart,
t1.UserName,
t2.Path,
t1.ReportID
FROM RankedReports t1
JOIN
dbo.Catalog t2
ON t1.ReportID = t2.ItemID
WHERE t1.iRank = 1
ORDER BY t1.TimeStart;
Run Code Online (Sandbox Code Playgroud)
您可以使用执行日志监控报告的使用情况。请检查此http://technet.microsoft.com/en-us/library/aa964131(SQL.90).aspx
您还可以运行查询来查找报告使用情况。检查马兹在此链接中的回复http://www.sqlservercentral.com/Forums/Topic433562-150-1.aspx
干杯
| 归档时间: |
|
| 查看次数: |
85329 次 |
| 最近记录: |