gpt4 book ai didi

使用服务主体的 Azure 分析服务连接不起作用

转载 作者:行者123 更新时间:2023-12-02 07:48:39 25 4
gpt4 key购买 nike

我尝试使用 ADOMD 连接到 Azure 分析服务并使用服务主体进行身份验证。所以我做了以下工作:

  1. 在 AAD 中创建应用。
  2. 授予应用(服务主体)对 Azure 分析服务的读取权限。

下面是我连接到 Azure 分析服务的代码。

            var clientId = "******";
var clientSecret = "*****";
var domain = "****.onmicrosoft.com";
var ssasUrl = "northeurope.asazure.windows.net";
var token = await TokenHelper.GetAppOnlyAccessToken(domain, $"https://{ssasUrl}", clientId, clientSecret);

var connectionString = $"Provider=MSOLAP;Data Source=asazure://{ssasUrl}/{modelname};Initial Catalog= adventureworks;User ID=;Password={token};Persist Security Info=True;Impersonation Level=Impersonate";
var ssasConnection = new AdomdConnection(connectionString);
ssasConnection.Open();
var query = @"Evaluate TOPN(10,Customer,Customer[Customer Id],1)";
var cmd = new AdomdCommand(query)
{
Connection = ssasConnection
};
using (var reader = cmd.ExecuteXmlReader())
{
string value = reader.ReadOuterXml();
Console.WriteLine(value);
}

我能够获取有效的访问 token ,但在尝试打开连接时出现以下错误:

AdomdErrorResponseException:用户“app:xxxxxxx@xxxxxx”无权访问“adventureworks”数据库,或者该数据库不存在。

其他信息::

  1. 我已验证是否已通过 Azure 门户向 Azure 分析服务的服务主体授予权限(读者以及也尝试过贡献)。
  2. 我已尝试使用服务帐户(用户名和密码)使用相同的代码,并且它有效。
  3. 如果我从连接字符串中删除“Initial Catalog= Adventureworks”,那么我的连接将会成功。但我不明白为什么分析服务权限没有传播到模型。

分辨率:

愚蠢的是,我在发布此内容后就自己得到了解决方案。上面的第 3 点给了我一个线索。通过门户授予对 Azure 分析服务的权限不会传播到服务主体(Azuire AD 应用程序)的模型。

步骤:

  1. 在 Sql server Mgmt Studio 中打开 Azure 分析服务。
  2. 在目标模型中,转到角色
  3. 将服务主体添加到具有权限的所需角色中。服务主体按以下格式添加:

    应用程序:[appid]@[tenantid]

示例:应用程序:8249E22B-CFF9-440C-AF27-60064A5743CE@86F119BE-D703-49E2-8B5F-72392615BB97

最佳答案

愚蠢的是,我在发布此内容后就自己得到了解决方案。上面的第 3 点给了我一个线索。通过门户授予对 Azure 分析服务的权限不会传播到服务主体(Azure AD 应用程序)的模型。

步骤:

  1. 在 Sql server Mgmt Studio 中打开 Azure 分析服务。
  2. 在目标模型中,转到角色
  3. 将服务主体添加到具有权限的所需角色中。服务主体按以下格式添加:

    应用程序:[appid]@[tenantid]

示例:应用程序:8249E22B-CFF9-440C-AF27-60064A5743CE@86F119BE-D703-49E2-8B5F-72392615BB97

我在这里记录了我的整个经历:https://unnieayilliath.com/2017/11/12/connecting-to-azure-analysis-services-using-adomd/

关于使用服务主体的 Azure 分析服务连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47160639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com