使用openrowset执行时,MDX查询返回不同的值

时间:2016-05-04 17:07:58

标签: sql mdx olap-cube

当我在存储多维数据集本身的分析服务器上执行相同的MDX查询时,通过来自sql server的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查询时,其他问题已经注意到了这个问题。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 + ''');'