ADOMD를 사용하여 Azure Analysis 서비스에 연결하고 서비스 사용자를 사용하여 인증하려고합니다. 그래서 다음과 같이했습니다 :Azure 분석 서비스 연결을 사용하여 서비스 사용자가 작동하지 않음
- AAD에 앱을 만듭니다.
- Azure Analysis 서비스에 대한 응용 프로그램 (서비스 사용자)의 읽기 권한을 부여했습니다.
아래 코드는 Azure Analysis 서비스에 연결하는 코드입니다. 하지 않습니다 'XXXXXXX의 @ xxxxxx가 응용 프로그램'
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);
}
나는 유효한 액세스 토큰을 얻을 수,하지만 연결을 열려고 할 때 오류를 다음 얻을 :
AdomdErrorResponseException 어느 사용자, 'adventureworks'데이터베이스에 대한 액세스 권한이 있거나 데이터베이스가 존재하지 않습니다.
추가 정보 : : I 권한 (기여와 리더 &도 시도) 것을 확인했다
- 은 푸른 포털을 통해 푸른 분석 서비스에 서비스 주체에 부여됩니다.
- 서비스 계정 (사용자 이름 & 암호)을 사용하여 동일한 코드를 시도했지만 작동합니다.
- 연결 문자열에서 "Initial Catalog = adventureworks"를 제거하면 연결이 성공합니다. 그러나 Analysis Services 사용 권한이 모델에 전파되지 않는 이유는 알 수 없습니다.
해상도 :
바보 난 그냥이 게시 한 후 혼자 해상도를 얻었다. 위의 3 번 지점은 나에게 단서를주었습니다. 포털을 통해 Azure 분석 서비스에 대한 권한을 부여하는 것은 서비스 원칙 (Azuire AD 앱)의 모델로 전파되지 않습니다.
단계 :
- 열기 SQL 서버 MGMT Studio의 푸른 분석 서비스를 제공합니다.
- 대상 모델에서 역할으로 이동하십시오.
권한이있는 필수 역할에 서비스 주체를 추가하십시오.
앱 : [APPID] @ [tenantid]
예 : 앱 : 8249E22B-CFF9-440C-AF27-60064A5743CE @ 86F119BE-D703-49E2-8B5F- 서비스 주체 포맷 이하에서 첨가 72392615BB97
를, 당신의 서비스 주체가 SQL에 액세스 할 수있는 권한이없는 것 같다. 데이터베이스 역할을 부여해야합니다. 다른 Azure 리소스에 액세스해야하는 경우 'Owner'또는 'Contributor'역할이 필요합니다. –