在 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.Server
和 Tabular.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
个对象。
我有一个兼容性级别为 1400 的表格 Azure Analysis Services 数据库。当我连接并尝试使用 AMO 包检索角色时,Roles
属性 始终是 null
,对于
DatabasePermissions
属性 也是如此
我正在使用 official docs 中推荐的 Tabular.Server
和 Tabular.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
个对象。