我正在尝试使用xmla获取ssasdb中存在的角色列表。我只需要角色,不需要其他信息。
我知道有一个 <RequestType>DISCOVER_XML_METADATA</RequestType>
:
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
<RequestType>DISCOVER_XML_METADATA</RequestType>
<Restrictions>
<RestrictionList xmlns="urn:schemas-microsoft-com:xml-analysis">
<DatabaseID>SSAS_DB_ID</DatabaseID>
</RestrictionList>
</Restrictions>
<Properties>
<PropertyList>
</PropertyList>
</Properties>
</Discover>
查询返回一个~9mb的xml,其中包含有关数据库的完整信息,包括我不需要的信息。
是的,它确实包含了角色:
...
<Roles>
<Role>
<Name>ROLE_NAME_AND_ID1</Name>
<ID>ROLE_NAME_AND_ID1</ID>
<CreatedTimestamp>2020-05-13T11:20:27.343333</CreatedTimestamp>
<LastSchemaUpdate>2020-06-03T06:16:53.816667</LastSchemaUpdate>
<Description />
<Members>
<Member>
<Sid>SID1</Sid>
<Name>DOMAIN\LOGIN1</Name>
</Member>
<Member>
<Sid>SID2</Sid>
<Name>DOMAIN\LOGIN2</Name>
</Member>
</Members>
</Role>
</Roles>
...
但是我只想要角色列表而不想要别的。
找不到一个明确的解释在网上或微软网站(那里的文件是非常奇怪的我),并将感谢任何见解。
3条答案
按热度按时间htzpubme1#
更新:我需要在sql过程中使用角色和成员的列表。我成功地利用了
DISCOVER_XML_METADATA
在程序中。下面是工作代码。尽管如此,它还是必须从ssas加载完整的xmlu元数据(而不是像我在主要问题中所想的那样,仅加载角色),但它是有效的。
截图
ddhy6vgd2#
另一种选择是使用DMV
$SYSTEM.TMSCHEMA_ROLES
&$SYSTEM.TMSCHEMA_ROLE_MEMBERSHIPS
. 您可以使用Invoke-ASCmd
例如1sbrub3j3#
一种方法是将此免费开源assp程序集添加到服务器或数据库中,然后运行以下程序(请参见此示例和此处其他与角色相关的程序集):
另一个选择是使用这个免费的开源visualstudio扩展bideveloper扩展,它可以生成一个可以导出为pdf的角色报告。此选项的优点是它通过查询active directory递归地展开组来查看成员。