在 C# 中使用 AMO 连接时,角色从 Azure Analysis Services 数据库返回为空

Roles come back as null from Azure Analysis Services database when connecting using AMO in C#

我有一个兼容性级别为 1400 的表格 Azure Analysis Services 数据库。当我连接并尝试使用 AMO 包检索角色时,Roles 属性 始终是 null,对于 .

中提到的 DatabasePermissions 属性 也是如此

我正在使用 official docs 中推荐的 Tabular.ServerTabular.Database 对象。

我的代码基于 ,并且我正在使用管理员帐户进行连接。

证明我正在访问的数据库上设置了角色:

检查数据库对象:

有趣的是,我在同一个 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.Model.Roles 访问角色,而不是通过 database.Roles 访问角色。我不确定为什么会这样,或者它是否在任何地方都有记录,但 another question.

告诉我这个事实

完成此操作后,我现在可以访问我想要的 ModelRole 个对象。