2016-05-04 4 views
0

Когда я выполняю тот же запрос MDX на аналитическом сервере, где хранится сам куб, и через вызов функции openrowset с SQL-сервера, я получаю заметно другой вывод.Запрос MDX возвращает разные значения при запуске с использованием openrowset

--MDX query-- 

MDX executed on analytic server

@sql = '--MDX query--' 
exec(N'select * from openrowset 
      (''MSOLAP'' 
      , ''Data Source= ANALYTIC SERVER; Catalog= CATALOG;'' 
      ,''' + @sql + ''');' 

MDX executed via SQL

Есть ли способ, чтобы получить тот же результат на стороне SQL, как при запросе аналитический сервер напрямую?

Я делаю что-то похожее на this question, решение для которого было предложено использовать openquery и/или openrowset.

Другие вопросы отметили проблему при использовании openrowset и иерархических запросов MDX.

ответ

1

Я думаю, что часть проблемы исходит от использования иерархических вызовов в MDX, что приводит к возвращаемым значениям, отличающимся при использовании OPENROWSET.

Решение, которое я нашел, было очень просто использовать вместо OLAPextensions add on, как предложено similar question. Это решение было намного быстрее и проще работать на локальном сервере, чем настраивать связанный сервер для openquery. Возвращаемая таблица точно такая же, как и на аналитическом сервере.

DECLARE @Server NVARCHAR(30) = 'ANALYTIC SERVER' 
DECLARE @Database NVARCHAR(50) = 'CATALOG'; 

DECLARE @MDX NVARCHAR(MAX) = '--MDX query--' 

EXEC ExecuteOLAP @Server, @Database, @MDX; 

enter image description here

+0

это очень ночное решение clr: мы используем эту хранимую процедуру и не использовали OPENQUERY с момента ее установки. – whytheq

0

Просто выберите один и тот же выход ...

@sql = '--MDX query--' 
exec(N'select "[Blah].[Blah 3].[Blah 3].[Table Code Level 2]" from openrowset 
      (''MSOLAP'' 
      , ''Data Source= ANALYTIC SERVER; Catalog= CATALOG;'' 
      ,''' + @sql + ''');' 
+0

Я не столько выдавая о дополнительных столбцах, больше их содержание полностью отличается или непригодным для использования во многих случаях. Я пытаюсь понять, как я могу заставить openrowset возвращать точно такой же набор столбцов и значений. Даже в этом случае NST.02 возвращается вместо правильного NST.02.06 –

+0

@HenryE Можете ли вы добавить MDX к своему вопросу? – dotjoe

+0

Мне удалось установить расширение, которое возвращает значения более точно, и, к счастью, также не требует использования связанного сервера –

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

  • Нет связанных вопросов^_^