用于通过OpenQuery执行MDX的链接服务器动态目录

时间:2014-09-07 16:03:45

标签: sql-server-2008 mdx linked-server olap-cube openquery

我的项目中有多个OLAP数据库,因此可以动态决定目录以执行此MDX查询吗?

SELECT * FROM OpenQuery(OLAP_SERVER, 'WITH MEMBER measures.X AS dimensions.count SELECT Measures.X ON 0 FROM MyCube') as X

我不想为每个OLAP数据库创建单独的链接服务器。 关系数据库和多维数据集数据库都驻留在同一台物理计算机上。

我的链接服务器配置是:

EXEC master.dbo.sp_addlinkedserver 
@server = N'OLAP_SERVER'
, @srvproduct=N'OLAP_SERVER', @provider=N'MSOLAP'
, @datasrc=N'localhost'
--, @catalog=N'xxxx' default catalog commented out
GO

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname = N'OLAP_SERVER'
, @locallogin = NULL 
, @useself = N'FALSE'
, @rmtuser=N'xxxx'
, @rmtpassword='xxxx'
GO

或者,是否可以使用OLAP数据库名称(如MDX脚本中的[OLAPDBName]。[MyCube])完全限定多维数据集名称?

请帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

如果使用OpenRowset代替OpenQuery,则可以动态地将连接参数指定为字符串:

select *
from OpenRowset('MSOLAP', 
                'Data Source=localhost;Initial Catalog=xxxx;Provider=MSOLAP.4;Integrated Security=SSPI;Format=Tabular;',
'WITH MEMBER measures.X AS dimensions.count
 SELECT Measures.X ON 0 FROM MyCube')