Ошибка строки подключения при использовании ADOMD.NET для подключения к Azure Analysis
Я пытаюсь получить данные из служб аналитики Azure с помощью ADOMD.NET из развернутой модели в облаке. Фрагмент кода, как показано ниже, но я получаю ошибку, что ConnectionString недействительно.
using Microsoft.AnalysisServices.AdomdClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test_Analysis_Service_retrieval
{
class Program
{
static void Main(string[] args)
{
string queryString = @"SELECT [MAP_CUST_NAME] FROM [AAS_MAPLOOKUP] where [MAP_ACT_NO] = '120000810';";
string connectionString = @"Data Source=asazure://westus.asazure.windows.net/bbacloud;UserName=xyz@gmail.com;Password=ABC@123;";
using (AdomdConnection connection = new AdomdConnection(connectionString))
{
CellSet AASOutput = null;
System.Xml.XmlReader reader = null;
try
{
string s = connection.ConnectionString;
Console.WriteLine(s);
connection.Open();
AdomdCommand command = new AdomdCommand(queryString, connection);
command.CommandTimeout = 100000;
reader = command.ExecuteXmlReader();
Console.WriteLine(reader.ReadOuterXml());
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
if (reader != null)
{
reader.Close();
}
connection.Close();
}
}
}
}
}
2 ответа
Первое, что вам нужно сделать, это убедиться, что у вас установлена последняя версия ADOMD.NET (AdomdClient). Загрузите его отсюда. После того, как вы установили его, убедитесь, что ваш проект C# имеет ссылку на него по адресу:
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.AnalysisServices.AdomdClient\v4.0_13.0.0.0__89845dcd8080cc91\Microsoft.AnalysisServices.AdomdClient.dll
Далее вам нужно изменить строку подключения на:
string connectionString = @"Data Source=asazure://westus.asazure.windows.net/bbacloud;User ID=user@domain.com;Password=pwdHere;Initial Catalog=DatabaseNameHere";
Обратите внимание на несколько вещей. Во-первых, это идентификатор пользователя, а не имя пользователя. Во-вторых, пользователь должен быть пользователем Azure Active Directory (учетной записью организации, а не личным LiveID). Наконец, вам нужно указать Начальный каталог, чтобы убедиться, что вы подключаетесь к правильной базе данных в случае, если у вас когда-либо развернуто несколько баз данных.
Оказывается, эта проблема связана с тем, что RTM-версия AdomdClient фактически не поддерживает RTM-версию Azure Analysis Services. В результате требуется следующий пакет Nuget:
https://github.com/ogaudefroy/Unofficial.Microsoft.AnalysisServices.AdomdClient
После удаления / удаления версии 12 (RTM-версии) Microsoft.AnalysisServices.AdomdClient.12.0.2000.8 и установки вышеупомянутого AdomdClient все работает просто отлично. Короче говоря, версия v12 не имеет встроенного кода для разбора asazure:// Источники данных
Очень раздражает отсутствие документации на сайте Microsoft и поддержки, связанной с этой проблемой. Однако это решит ваш вопрос.