需要查询SSRS数据库以获取报告访问权限



我想知道是否有一种方法可以在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=主页

要了解有关RS SOAP API的更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms154052.aspx

您可以使用类似SSMS的东西直接查询ReportServer数据库。您要查找的大部分内容可以直接在dbo.Catalog表中找到:

SELECT *
FROM dbo.Catalog
WHERE Type = 2; -- 2 = Reports, 5 = Data Sources

最新更新