我已经在本地计算机上安装了ms sql服务器和ms分析服务器。 我的最终目的是要能够从分析服务器上的任何多维数据集获取数据并将其插入到常用的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
这是行不通的
链接服务器“ MYNAMESERVER”的OLE DB提供程序“ SQLNCLI11”返回了消息“语法错误,权限冲突或其他非特定错误”。
如果查询在运行时未指定链接服务器(因为实际上是相同的):
set @open_query = 'SELECT DATEADD(D, 0, DATEDIFF(D, 0, GETDATE())), * FROM OpenQuery ('''+ @mdx_query + ''')'
但是此查询完全可以用于mdx查询,并且如果在Analisys服务器上运行,则运行良好。 我认为问题是因为sqlserver中只有一个链接服务器-本身带有提供程序'SQLNCLI',但是分析服务器应该带有提供程序'MSOLAP'。我不能添加另一个具有相同名称但提供程序不同的链接服务器。 有什么办法可以解决这个问题?