Я установил MS SQL Server и MS Analysis Server на моем локальном компьютере. Моя конечная цель - иметь возможность получать данные из любого куба на сервере анализа и вставлять их в реляционную базу данных MS SQL. Вот как выглядят мои кубы:
Я нашел довольно красивый способ получить данные из куба, подключенного к 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 + ''')'
Ошибка синтаксиса:
Но этот запрос полностью подходит MDX-запросу и хорошо работает, если работает на сервере Analisys. Я думаю, что проблема в том, что в sqlserver есть только один связанный сервер - сам с поставщиком SQLNCLI, но сервер анализа должен быть с поставщиком MSOLAP. Я не могу добавить другой связанный сервер с тем же именем, но с другим провайдером. Есть ли способ решить эту проблему?