2014-10-23 3 views
2

Для моего исследования мне нужно иметь возможность запросить у Microsoft анализатор (2012) куб данных с движком Unity. Для подключения есть Authentication Microsoft необходимо и Unity использует Mono Разработка библиотек для соединений SQL, который дает мне проблему. Поскольку до сих пор я не нашел решение для Mono, чтобы иметь возможность использовать аутентификацию Microsoft.Моноразвитие Microsoft Authentication для сервера Microsoft Analysis

Я хочу найти хороший способ использования проверка подлинности Windows внутри домена у клиента. Поскольку конечное приложение должно иметь возможность подключаться к Кубы данных, предпочтительно с использованием строки подключения .

Кубы данных с использованием Сервер IIS, который позволяет использовать HTTP-соединение с использованием SOAP, не всегда будет доступен в зависимости от настройки клиента. Кроме того, желание создать приложение на нескольких платформах затрудняет добавление пользовательской библиотеки, если даже для нее нет пользовательской библиотеки, так как я еще не смог ее найти.

Моя текущая менее удачливые варианты боковых являются:

  • Построить дополнительные окна приложения с визуальной студии, которые запрашивают это данные и анализирует его Unity (Но требует и дополнительное приложение к перспективе).
  • Используйте http SOAP-соединение с сервисом IIS (Но для настройки сервера IIS требуется настройка IIS, что не всегда возможно в зависимости от клиента).
  • Найти библиотеку, которая позволяет мне использовать Microsoft Authentication (, но, вероятно, работает только на платформе Windows или не работает с Unity).

Я надеюсь, что кто-то уже нашел или знает, может быть хорошее решение, которое работает для единства без указания ограничений я упомянул выше.


Я использую Microsoft.AnalysisServices.AdomdClient; с визуальной студией, которая отлично работает для визуальной студийной сборки, но не работает в monodevelop в единстве.

try 
     { 
      using (AdomdConnection adcon = new AdomdConnection(connectionString)) 
      { 
       adcon.Open(); 
       using (AdomdCommand adcmd = adcon.CreateCommand()) 
       { 
        adcmd.CommandText = textBox3.Text.ToString(); 
        AdomdDataReader dr = adcmd.ExecuteReader(CommandBehavior.CloseConnection); 

        while (dr.Read()) 
        { 
         for (int i = 0; i < dr.FieldCount; i++) 
          textBox2.AppendText(dr[i] + (i == dr.FieldCount - 1 ? "" : ", ") + Environment.NewLine); 
        } 
        dr.Close(); 
        textBox2.AppendText(adcmd.CommandText.ToString() + Environment.NewLine + Environment.NewLine); 

        adcmd.Connection.Close(); 
       } 

       adcon.Close(); 
      } 
     } 
     catch(Exception e) 
     { 
      textBox2.AppendText(e.ToString() + Environment.NewLine); 
     } 

Благодарим Вас за любые предложения, отзывы или ответы!

+0

Знаете ли вы, что для подключения к серверу служб Analysis Services вам нужен клиент служб Analysis Services, а реляционный клиент SQL Server вообще не помогает? Технически оба протокола соединений не имеют ничего общего. Один использует TDS, и один использует XML (сжатый по-определенному Microsoft). – FrankPl

+0

Да, я перешел на «using Microsoft.AnalysisServices.AdomdClient;». Но по-прежнему та же проблема, возможно, использовать DLL в Mono с Unity. Поэтому я собираюсь сделать второе приложение для отправки результатов в Unity, я думаю. – VulstaR

ответ

0

Что-то, что вы могли попробовать, будет использовать реляционный механизм SQL Server как своего рода прокси. Механизм реляционного SQL Server должен быть доступен, если доступны службы Analysis Services.

Вы можете настроить связанный сервер в реляционном SQL Server, который ссылается на сервер служб Analysis Services, используя клиент OLEDB служб Analysis Services. Как настроить связанные серверы описано here.

Тогда вы можете отправить MDX к этому связанному серверу и получить обратно результаты в реляционной, как это:

select * from openquery(AdventureWorksOLAP, 
     'select [Measures].[Sales Amount] on columns from [Adventure Works]') 

где AdventureWorksOLAP это имя вашего связанного сервера.

Однако вы должны знать, что имена столбцов странные (с закрывающими квадратными скобками, которые должны быть экранированы в квадратных скобках, включающих имена столбцов, путем удвоения). E. g. в вышеуказанном запросе будет столбец, к которому вы должны получить доступ, как [[Measures]].[Sales Amount]]]. Кроме того, все значения ячеек возвращаются как nvarchar и, возможно, для их работы может потребоваться лить числовое значение.

Возможно, вы можете инкапсулировать изменение имени столбца и типизацию столбцов в хранимую процедуру.

И вы можете использовать аутентификацию SQL-сервера для доступа к реляционной базе данных.

+0

Это не меняет вопроса о том, что вам ничего не нужно менять для работы заказчика. Но это еще один вариант, который я могу добавить к своим исследованиям. Таким образом, информация по-прежнему очень полезна. – VulstaR

Смежные вопросы