我有一个表格兼容级别为1400的表格Azure Analysis Services数据库。当我连接并尝试使用AMO包检索角色时,Roles
属性始终为null
,与DatabasePermissions
中提到的this answer属性相同。
我正在使用Tabular.Server
推荐的Tabular.Database
和official docs物体。
我已将代码基于this answer,我使用管理员帐户进行连接。
证明在我访问的数据库上设置了角色:
检查数据库对象:
有趣的是,我在同一个Azure Analysis Services服务器中有两个其他数据库,他们有同样的问题。
我的代码:
using (Server server = new Server())
{
string serverDomain = "australiasoutheast.asazure.windows.net";
string serverName = "redacteddevpilotv1";
string databaseModel = "PilotV1";
string serverAddress = $"asazure://{serverDomain}/{serverName}";
//string token = await GetAccessToken($"https://{serverDomain}");
//string connectionString = $"Provider=MSOLAP;Data Source={serverAddress};Initial Catalog={databaseModel};User ID=;Password={token};Persist Security Info=True;Impersonation Level=Impersonate";
string connectionString = $"Provider=MSOLAP;Data Source={serverAddress};Initial Catalog={databaseModel};User ID=redacted;Password=redacted;Persist Security Info=True;Impersonation Level=Impersonate";
var t = server.SupportedCompatibilityLevels;
var x = server.Roles;
server.Connect(connectionString);
t = server.SupportedCompatibilityLevels;
x = server.Roles;
Database d = server.Databases.FindByName(databaseModel);
}
The documentation进入如何添加角色而不是如何检索它们...
事实证明,我需要通过database.Roles
访问它们,而不是通过database.Model.Roles
访问角色。我不知道为什么会这样,或者是否记录在案,但我被another question置于这个事实上。
执行此操作后,我现在可以访问我想要的ModelRole
对象。