2016-05-04 6 views
0

キューブ自体が格納されているアナリティックサーバーで同じMDXクエリを実行し、SQL Serverからのopenrowset関数呼び出しによって、openrowsetを使用して実行すると、MDXクエリが異なる値を返します

--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クエリを使用する場合、他の質問にも注意があります。

答えて

1

私は問題の一部は、OPENROWSETを使用したとき異なっている返された値につながるMDX、中階層の呼び出しを使用してから来ていると思います。

similar questionで示唆されているように、代わりにOLAPextensions add onを使用するだけで解決しました。このソリューションは、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

+0

これは非常に夜間の解決策です。このストアドプロシージャを使用し、インストール後にOPENQUERYを使用しませんでした。 – whytheq

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

私はそんなに余分な列については配っていないよ、それらのより多くのコンテンツは、多くの場合、完全に異なるか、使用不可能です。私はopenrowsetを使って、同じ列と値のセットを返す方法を理解しようとしています。この場合でも、正しいNST.02.06の代わりにNST.02が返されます。 –

+0

@HenryE MDXを質問に追加できますか? – dotjoe

+0

私は、値をより正確に返す拡張機能をインストールすることができました。ありがたいことに、リンクサーバーを使用する必要もありません。 –

関連する問題