Запустите MDX-запрос на локальном сервере анализа с MS SQL локального сервера - PullRequest
0 голосов
/ 23 декабря 2019

Я установил MS SQL Server и MS Analysis Server на моем локальном компьютере. Моя конечная цель - иметь возможность получать данные из любого куба на сервере анализа и вставлять их в реляционную базу данных MS SQL. Вот как выглядят мои кубы:

enter image description here

Я нашел довольно красивый способ получить данные из куба, подключенного к sqlserver:

declare @mdx_query as varchar(max), @open_query as nvarchar(max), @linked_server as varchar(max)

set @mdx_query = 'SELECT {([Date].[Calendar].[Month],[Measures].[Sales Amount]),
([Date].[Calendar].[Month],[Measures].[Tax Amount])}  ON COLUMNS,
{([Product].[Product].[Product], 
[Product].[Category].[Category])} ON ROWS
FROM [Adventure Works]'

set @linked_server = 'MYNAMESERVER'

set @open_query = 'SELECT DATEADD(D, 0, DATEDIFF(D, 0, GETDATE())), * FROM OpenQuery ("'+@linked_server+'", '''+ @mdx_query + ''')'

execute sp_executesql @open_query

Это не работает

Поставщик OLE DB "SQLNCLI11" для связанного сервера "MYNAMESERVER" вернул сообщение "Синтаксическая ошибка, нарушение прав доступа или другая неспецифическая ошибка".

Если запрос выполняется без указания связанного сервера (поскольку на самом деле он такой же):

set @open_query = 'SELECT DATEADD(D, 0, DATEDIFF(D, 0, GETDATE())), * FROM OpenQuery ('''+ @mdx_query + ''')'

Ошибка синтаксиса: enter image description here

Но этот запрос полностью подходит MDX-запросу и хорошо работает, если работает на сервере Analisys. Я думаю, что проблема в том, что в sqlserver есть только один связанный сервер - сам с поставщиком SQLNCLI, но сервер анализа должен быть с поставщиком MSOLAP. Я не могу добавить другой связанный сервер с тем же именем, но с другим провайдером. Есть ли способ решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...