最後に、AMO を使用してこれを達成することができます。これを解決するために私がしたことは次のとおりです。以下は、特定の SSAS データベースで 1 人のユーザーが持っている権限のリストを確認するために抜粋されたコードです。この結果は、仮想の DataTable に読み込まれます。これが、同様の解決策を見つけようとしている他の人に役立つことを願っています。
using (Server Srv = new Server())
{
Srv.Connect("\\serverName\instanceName");
Database d = Srv.Databases.FindByName("My SSAS DB");
foreach (Role r in d.Roles)
{
foreach (RoleMember m in r.Members)
{
if (string.Compare(m.Name, "domainName\userName", StringComparison.InvariantCultureIgnoreCase) == 0)
{
foreach (Cube c in d.Cubes)
{
CubePermission cp = c.CubePermissions.FindByRole(r.ID);
if(!(cp == null))
{
foreach(CubeDimensionPermission cdimPerm in cp.DimensionPermissions)
{
foreach(AttributePermission attPerm in cdimPerm.AttributePermissions)
{
DataRow dr = dt.NewRow();
dr["Database Name"] = d.Name;
dr["Role Name"] = r.Name;
dr["Dimension Name"] = cdimPerm.CubeDimension.Name;
dr["Cube Name"] = c.Name;
dr["Attribute Name"] = attPerm.Attribute.Name;
dr["AllowedSet"] = attPerm.AllowedSet;
dr["DeniedSet"] = attPerm.DeniedSet;
dr["DefaultMember"] = attPerm.DefaultMember;
dr["VisualTotals"] = attPerm.VisualTotals;
dt.Rows.Add(dr);
}
}
}
}
}
}
}
Srv.Disconnect();
}