You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSRS报表服务器迁移:如何在Reportserver数据库中查询报表用户权限

SSRS报表授权用户与角色信息查询指南

在ReportServer数据库中,"Manage"视图下"Security"标签页的权限数据分散在几个核心表中,具体关联关系和查询方式如下:

核心数据表说明

  • Catalog:存储所有报表、文件夹、数据源等对象的基础信息,通过ItemID与权限策略关联,Name字段对应对象的显示名称。
  • Users:记录系统内的用户和组信息,UserID是唯一标识,UserName对应用户/组的账户名称。
  • Roles:定义SSRS内置或自定义的角色(如Content Manager、Browser、Publisher等),RoleID关联权限记录,Name为角色名称。
  • Policies:存储每个对象的权限策略,PolicyID是主键,ItemID关联Catalog中的具体对象。
  • PolicyUserRole:用户、角色与权限策略的关联表,通过PolicyID、UserID、RoleID三者绑定,实现用户-角色-对象的权限映射。

实用查询语句

查询指定报表的授权用户及角色

SELECT 
    c.Name AS 报表名称,
    u.UserName AS 用户或组名称,
    r.Name AS 角色名称
FROM 
    Catalog c
INNER JOIN 
    Policies p ON c.PolicyID = p.PolicyID
INNER JOIN 
    PolicyUserRole pur ON p.PolicyID = pur.PolicyID
INNER JOIN 
    Users u ON pur.UserID = u.UserID
INNER JOIN 
    Roles r ON pur.RoleID = r.RoleID
WHERE 
    c.Name = '目标报表名称' -- 替换为你要查询的报表名称
ORDER BY 
    u.UserName, r.Name;

查询所有对象的完整权限信息

如果需要导出全量权限数据用于迁移,只需移除上述SQL中的WHERE条件即可:

SELECT 
    c.Name AS 对象名称,
    c.Type AS 对象类型, -- 1=文件夹,2=报表,5=数据源等
    u.UserName AS 用户或组名称,
    r.Name AS 角色名称
FROM 
    Catalog c
INNER JOIN 
    Policies p ON c.PolicyID = p.PolicyID
INNER JOIN 
    PolicyUserRole pur ON p.PolicyID = pur.PolicyID
INNER JOIN 
    Users u ON pur.UserID = u.UserID
INNER JOIN 
    Roles r ON pur.RoleID = r.RoleID
ORDER BY 
    c.Name, u.UserName;

注意:不同SSRS版本的表字段可能存在细微差异,执行前建议先核对表结构。

内容的提问来源于stack exchange,提问作者user1982778

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:48:22