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

使用TMSL设置Power BI数据集表对象级权限遇问题求助

Power BI数据集对象级安全TMSL命令失效问题排查

问题场景

尝试使用TMSL为Power BI服务中的数据集某张表设置对象级安全权限为none:

  1. 编写的基础角色配置片段(代码片段1)执行时提示错误:Data at root level is invalid
  2. 将配置放入alter命令(代码片段2)后,执行返回空结果,但数据集权限未发生任何变化

代码片段1(报错)

"roles": [
  {
    "name": "My Role",
    "description": "All allowed users to query the model",
    "modelPermission": "read",
    "tablePermissions": [
      {
        "name": "My Table",
        "metadataPermission": "none"
      }
    ]
  }
]

代码片段2(无效果)

{
  "alter": {
    "object": {
      "database": "dataset name",
      "role":"Role Name"
    },
    "role": {
      "name": "Role Name",
      "description": "All allowed users to query the model",
      "modelPermission": "read",
      "tablePermissions": [
        {
          "name": "Table Name",
          "metadataPermission": "none"
        }
      ]
    }
  }
}

问题原因及修复方案

1. 代码片段1的错误原因

该片段只是roles数组的一部分,并非完整的TMSL命令。TMSL要求命令必须包含顶层的操作节点(如create/alter),单独的角色配置无法被解析,因此触发Data at root level is invalid错误。

2. 代码片段2的核心遗漏

针对Power BI服务的TMSL命令,object节点必须包含server字段,指定Power BI云端服务器地址:pbiazure://api.powerbi.com。缺少该字段时,命令无法定位到Power BI服务环境,因此执行后无任何实际效果。

此外还需注意:

  • 确保dataset name、Role Name、Table Name与Power BI服务中的实际名称完全匹配(名称大小写、空格均敏感)
  • 执行命令的账号需拥有数据集的管理员权限

正确的TMSL命令示例

{
  "alter": {
    "object": {
      "server": "pbiazure://api.powerbi.com",
      "database": "你的数据集名称",
      "role": "你的角色名称"
    },
    "role": {
      "name": "你的角色名称",
      "description": "允许所有用户查询模型",
      "modelPermission": "read",
      "tablePermissions": [
        {
          "name": "目标表名称",
          "metadataPermission": "none"
        }
      ]
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:35:11