使用TMSL设置Power BI数据集表对象级权限遇问题求助
Power BI数据集对象级安全TMSL命令失效问题排查
问题场景
尝试使用TMSL为Power BI服务中的数据集某张表设置对象级安全权限为none:
- 编写的基础角色配置片段(代码片段1)执行时提示错误:
Data at root level is invalid - 将配置放入
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
相关产品推荐
相关产品推荐

