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

如何批量获取Power BI报表服务器中启用行级安全性的所有报表?

检索Power BI报表服务器中启用行级安全性(RLS)的报表

Power BI报表服务器(PBIRS)的系统视图里确实没有直接提供标识报表是否启用RLS的布尔字段,你需要通过解析报表元数据的XML内容来实现。核心逻辑是:报表的RLS配置存储在[PBIRS].[dbo].[Catalog]表的Content字段中(该字段是压缩的XML格式),我们可以解压并解析这个XML来判断是否包含RLS规则。

方法1:直接检查报表自身的RLS配置

执行以下SQL查询,可直接筛选出自身启用了RLS的报表:

SELECT
    c.ItemID,
    c.Name AS ReportName,
    c.Path AS ReportPath,
    c.CreatedDate,
    c.ModifiedDate
FROM
    [PBIRS].[dbo].[Catalog] c
WHERE
    c.Type = 2 -- Type=2代表报表类型
    AND CONVERT(XML, DECOMPRESS(c.Content)).exist('/Report/Model/Roles/Role') = 1

说明:

  • DECOMPRESS(c.Content):将压缩的Content字段解压为可解析的XML格式。
  • exist('/Report/Model/Roles/Role') = 1:通过XPath表达式检查报表的模型定义中是否存在RLS角色节点,只要存在该节点,说明报表启用了RLS。

方法2:包含引用共享数据集的RLS检查

如果报表引用了带RLS的共享数据集,这类报表也需要纳入统计,可使用以下查询:

WITH ReportDSRefs AS (
    SELECT
        c.ItemID AS ReportID,
        c.Name AS ReportName,
        c.Path AS ReportPath,
        dsref.ReferencedID AS DatasetID
    FROM
        [PBIRS].[dbo].[Catalog] c
        JOIN [PBIRS].[dbo].[DatasetReferences] dsref ON c.ItemID = dsref.ItemID
    WHERE
        c.Type = 2
),
DatasetRLS AS (
    SELECT
        ItemID AS DatasetID,
        Name AS DatasetName
    FROM
        [PBIRS].[dbo].[Catalog]
    WHERE
        Type = 8 -- Type=8代表共享数据集
        AND CONVERT(XML, DECOMPRESS(Content)).exist('/Model/Roles/Role') = 1
)
SELECT DISTINCT
    rd.ReportID,
    rd.ReportName,
    rd.ReportPath,
    dr.DatasetName AS ReferencedRLSDataset
FROM
    ReportDSRefs rd
    JOIN DatasetRLS dr ON rd.DatasetID = dr.DatasetID
UNION ALL
-- 合并自身带RLS的报表
SELECT
    ItemID AS ReportID,
    Name AS ReportName,
    Path AS ReportPath,
    NULL AS ReferencedRLSDataset
FROM
    [PBIRS].[dbo].[Catalog]
WHERE
    Type = 2
    AND CONVERT(XML, DECOMPRESS(Content)).exist('/Report/Model/Roles/Role') = 1

说明:

  • 第一个CTEReportDSRefs获取所有报表关联的共享数据集ID。
  • 第二个CTEDatasetRLS筛选出启用了RLS的共享数据集。
  • 通过UNION ALL合并两类报表:自身带RLS的报表、引用带RLS共享数据集的报表,确保结果无遗漏。

注意事项

  • 确保执行查询的账号拥有PBIRS数据库的读取权限(至少对Catalog和DatasetReferences表有SELECT权限)。
  • 若部分旧版本PBIRS的XML结构略有差异,可先解压一个已知带RLS的报表Content字段,查看实际XML结构后调整XPath表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:35:15