Azure Analysis Services中如何为TMSL脚本角色成员添加描述
解决Azure Analysis Service角色成员添加描述的问题
问题原因
兼容性级别1500的表格模型,其TMSL脚本的RoleMember对象并不支持description属性——这是执行脚本报错的直接原因。AAS的TMSL语法规范里,角色成员仅支持memberName(对应AAD对象ID)和identityProvider属性,没有预留描述字段的位置。
正确实现方式
1. 角色级描述替代
如果不需要针对单个成员添加描述,可以给整个角色设置描述,用来关联该角色对应的AAD组友好名称:
{ "alter": { "object": { "database": "YourDatabase", "role": "YourRole" }, "role": { "name": "YourRole", "description": "财务部门只读访问组(AAD对象ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)", "members": [ { "memberName": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "identityProvider": "AzureAD" } ], "modelPermission": "read" } } }
2. 外部元数据映射
如果必须针对每个AAD组成员记录友好名称,只能通过外部系统维护映射关系:
- 自建一个元数据表,存储AAD对象ID、友好名称、对应角色等信息
- 在SSMS手动编辑角色时,可在备注中记录友好名称(但该备注不会被TMSL脚本识别或导出)
3. 升级模型兼容性(可选)
如果可以将模型兼容性级别升级到1600及以上,虽然TMSL的RoleMember仍不支持description,但可以利用XMLA脚本的扩展属性来存储自定义元数据,不过这需要更复杂的脚本编写,仅适用于高级场景。
正确的TMSL更新角色成员脚本示例
{ "alter": { "object": { "database": "AdventureWorksTabular1500", "role": "FinanceReadOnly" }, "role": { "members": [ { "memberName": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv", "identityProvider": "AzureAD" } ] } } }
内容的提问来源于stack exchange,提问作者Brad
相关产品推荐
相关产品推荐

