Ошибка строки подключения при использовании 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 и поддержки, связанной с этой проблемой. Однако это решит ваш вопрос.

Другие вопросы по тегам