使用SQL查询和C#以编程方式检查Reporting Services的角色

时间:2018-03-09 14:07:34

标签: c# sql-server reporting-services permissions

我创建了一个使用UAC的WiX Toolset设置。

我必须以编程方式检查Windows用户是否是Reporting Services实例的内容管理器,因为Windows用户必须

  • 发布,更新和删除报告,文件夹和数据源
  • 将新角色添加到其他Windows帐户

我有:

  • Reporting Services实例名称
  • 报告服务数据库名称
  • Reporting Services实例的Web服务URL

使用WiX我可以使用C#,SQL查询...

使用SQL Server我只需使用

IS_SRVROLEMEMBER

检查Windows帐户在SQL Server实例上的角色

如何以编程方式检查Reporting Services中的角色? 也许在Reporting Services的表上使用sql查询? 有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

我不确定这是否是您所追求的,但这些表包含用户及其角色。

例如

select 
    u.* ,
    r.*
 from ReportServer..Users u
    join ReportServer..PolicyUserRole ur on u.UserID = ur.UserID
    join ReportServer..Roles r on ur.RoleID = r.RoleID
    where  UserName like '%john%'

答案 1 :(得分:0)

您可以使用以下代码

   select U.UserName, R.RoleName,R.Description, C.Path, C.Name 
    from dbo.PolicyUserRole A
       inner join dbo.Policies P on A.PolicyID = P.PolicyID
       inner join dbo.Users U on A.UserID = U.UserID
       inner join dbo.Roles R on A.RoleID = R.RoleID
       inner join dbo.Catalog C on A.PolicyID = C.PolicyID
       WHERE  UserName like '%Ben%'