Stored procedures 使用MDX查询执行sql SP时出错

Stored procedures 使用MDX查询执行sql SP时出错,stored-procedures,sql-server-2008-r2,mdx,openquery,Stored Procedures,Sql Server 2008 R2,Mdx,Openquery,我正在使用openquery在SQLServer2008存储过程中执行MDX查询 I jst遵循在网站上查看的步骤。当我执行下面这样的查询时,它的工作状态很好,但使用存储过程时,它的获取错误 select * from openquery (TESTLINKSERVER,' SELECT NON EMPTY { [Measures].[Duration], [Measures].[ID] } ON COLUMNS FROM [CUBEDB] ') 与SP一起得到以下错误 Incorrec

我正在使用openquery在SQLServer2008存储过程中执行MDX查询

I jst遵循在网站上查看的步骤。当我执行下面这样的查询时,它的工作状态很好,但使用存储过程时,它的获取错误

 select * from openquery (TESTLINKSERVER,' SELECT NON EMPTY 
 { [Measures].[Duration], [Measures].[ID] } ON COLUMNS FROM [CUBEDB] ')
与SP一起得到以下错误

Incorrect syntax near the keyword 'SELECT'.
Incorrect syntax near '{'.
我在SP中编写的代码如下

USE [TESTDB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[123CUBE_SP]

AS

BEGIN

declare @mdx_query as varchar(max), @open_query as nvarchar(max), @linked_server as varchar(max)

set @mdx_query = 'SELECT NON EMPTY { [Measures].[Duration], [Measures].[ID] } ON COLUMNS FROM [CUBEDB]'

set @linked_server = 'TESTLINKSERVER'

set @open_query = 'SELECT * FROM OpenQuery('+@linked_server+','+ @mdx_query +')'

execute sp_executesql @open_query

END
我是分析服务和MDX的新手,如果您有任何错误,请纠正我


多谢各位

您在open_查询中丢失了MDX查询周围的引号。尝试按以下方式更改行:

set @open_query = 'SELECT * FROM OpenQuery(' + @linked_server + ',''' + @mdx_query + ''')'

您已在OpenU查询中丢失MDX查询周围的引号。尝试按以下方式更改行:

set @open_query = 'SELECT * FROM OpenQuery(' + @linked_server + ',''' + @mdx_query + ''')'

是的,那绝对是正确的。谢谢你,山姆,你真是太棒了。谢谢你,山姆。