我想知道是否有办法在 SQL (2005) 查询(所有报告)中返回:报告 ID、报告名称、报告路径、用户和组安全性、数据源。
我知道我可以转到我的报表服务器页面并转到属性 > 安全性,但我们有超过 120 个报表,我想看看是否有更简单的方法来获取我需要的信息。
提前致谢!
我想知道是否有办法在 SQL (2005) 查询(所有报告)中返回:报告 ID、报告名称、报告路径、用户和组安全性、数据源。
我知道我可以转到我的报表服务器页面并转到属性 > 安全性,但我们有超过 120 个报表,我想看看是否有更简单的方法来获取我需要的信息。
提前致谢!
A. 在您知道自己在做什么之前,永远不要直接查询 RS 数据库。查询可能会获得锁,这可能会影响 RS 的整体性能。
B. 要了解报表执行统计信息,您可以使用 RS 2008 及更高版本中的 ExecutionLog 视图或使用 NOLOCK 提示进行以下查询。
Select CAST(C.Name AS VARCHAR(20)) [Name],
E.ReportID,
E.InstanceName,
E.UserName,
E.RequestType,
E.Format,
E.Parameters,
E.TimeStart,
E.TimeEnd,
E.TimeDataRetrieval,
E.TimeProcessing,
E.TimeRendering,
E.Source,
E.Status,
E.ByteCount,
E.[RowCount]
from executionlog E WITH (NOLOCK) inner join catalog C WITH (NOLOCK)
on E.ReportID = C.ItemID
C. RS 通过 SOAP API 公开几乎所有的功能。例如,我的 MS 发布的这个示例展示了如何获取有关报告项目的安全信息http://msftrsprodsamples.codeplex.com/wikipage?title=SS2008R2%21RSPermissions%20Sample%20Application&referringTitle=Home
要了解有关 RS SOAP API 的更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms154052.aspx
您可以ReportServer
使用 SSMS 之类的工具直接查询数据库。您要查找的大部分内容都可以直接在dbo.Catalog
表格中找到:
SELECT *
FROM dbo.Catalog
WHERE Type = 2; -- 2 = Reports, 5 = Data Sources