У меня есть следующий код для получения доступа к SQL с использованием C #, есть ли эквивалент для служб анализа? Я пробовал разные подходы, но не вижу, где можно предоставить токен доступа?
Создать соединение SQL
return new SqlConnection($"Data Source=abc; Initial Catalog=def")
{
AccessToken = GetToken()
};
Подключение служб Analysis Services
var builder = new OleDbConnectionStringBuilder
{
ConnectionString = "abc"
};
builder.Add("Password", "5r6utviub");
return new AdomdConnection(builder.ConnectionString);
Метод GetToken ниже
var request = (HttpWebRequest)WebRequest.Create("xxx");
request.Headers["Metadata"] = "true";
request.Method = "GET";
string accessToken;
try
{
var response = (HttpWebResponse)request.GetResponse();
var streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
JavaScriptSerializer j = new JavaScriptSerializer();
var list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
accessToken = list["access_token"];
}
catch (Exception e)
{
throw new Exception(e.Message);
}
return accessToken;
Обновление
var builder = new OleDbConnectionStringBuilder
{
ConnectionString = $"Provider=MSOLAP;Data Source=asazure://somewhere.asazure.windows.net/xyz;Catalog=mydb;Password={GetToken()};Persist Security Info=True;Impersonation Level=Impersonate"
};
return new AdomdConnection(builder.ConnectionString);
conn.Open(); // fails with Authentication failed
Обновление № 2 - показывает строку подключения
Provider=MSOLAP;
Data Source=asazure://somewhere.asazure.windows.net/xyz;
Persist Security Info=True;
Password=qwertyuytrxtcfyvgubhkvjchxye56udb4sxcbhvutycxt;
Impersonation Level=Impersonate;
catalog=db