【发布时间】:2015-06-21 04:51:37
【问题描述】:
我正在处理一个 SSAS 项目,除其他外,我需要在 C# 中获取表格多维数据集的完整用户列表。 目前我的工作方式是我可以获得角色,但数据不完整。当我调用 Server.Database.Roles(为便于阅读而简化)属性并枚举它时,我只得到 ID、Name 和 CreatedTimeStamp。我缺少的是成员、CellPermissions(DAX 过滤器)以及这些成员的权限,这一点至关重要。 我目前在 Server.Database.Cube 中寻找的权限(读/写/管理员)但 CubePermissions 是空的...
在 SSMS 中,当我编写一个 testroles 脚本时,该角色包含:
<ID>Role</ID>
<Name>TestRole</Name>
<Description>role for testing</Description>
<Members>
<Member>
<Name>THORVALDDATA\rj</Name>
<Sid>OMITTED</Sid>
</Member>
<Member>
<Name>THORVALDDATA\dp</Name>
<Sid>OMITTED</Sid>
</Member>
<Member>
<Name>THORVALDDATA\jtl</Name>
<Sid>OMITTED</Sid>
</Member>
</Members>
但如前所述,当我在代码中枚举它时,我没有得到成员和描述。
各位聪明人能帮我弄清楚这里出了什么问题吗?
我所有的代码:
RoleCollection roleCollection = _analysisServer.Databases[dbID].Roles;
Database database = _analysisServer.Databases[dbID];
Dictionary<string, CubeRole> roles = new Dictionary<string, CubeRole>();
foreach (Role role in roleCollection)
{
CubeRole cRole = new CubeRole();
cRole.ID = role.ID;
cRole.Name = role.Name;
cRole.Members = role.Members;
CubeCollection cubeCollection = _analysisServer.Databases[dbID].Cubes;
foreach (Cube cube in cubeCollection)
{
foreach (CubePermission cubePermission in cube.CubePermissions)
{
cRole.Filters = cubePermission.CellPermissions;
cRole.Permission.Add(cubePermission);
}
}
roles.Add(cRole.Name, cRole);
}
return roles;
【问题讨论】: