使用 openrowset 执行时 MDX 查询 returns 个不同的值

MDX query returns different values when executed using openrowset

当我在存储多维数据集本身的分析服务器上执行相同的 MDX 查询并通过来自 sql 服务器的 openrowset 函数调用时,我得到明显不同的输出。

--MDX query--

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

有没有办法在SQL端获得与直接查询解析服务器时相同的输出?

我正在做类似于 this question 的事情,建议使用 openquery 和/或 openrowset 的解决方案。

其他问题已经注意到使用openrowset和分层MDX查询时的问题。

只需select相同的输出...

@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 + ''');'

我认为部分问题来自于在 MDX 中使用分层调用,这导致使用 openrowset 时返回值不同。

我发现的解决方案非常简单,就是使用 OLAPextensions add on instead, as suggested by a similar question 。与为 openquery 设置链接服务器相比,此解决方案在本地服务器上运行起来更快更容易。 table it returns 与解析服务器完全一样

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

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

EXEC ExecuteOLAP @Server, @Database, @MDX;