我有一个像这样的查询
SELECT column1, column2 FROM OPENQUERY(AnalysisServerName, 'MDX QUERY ...').
它在一个存储过程中。MDX 查询是在其中动态构建的,查询的长度远远超过 8000 个字符(最多可达到 400 000 个符号)。
MDX 查询返回大约 200 列,我只需要其中的一些。由于尺寸复杂性,我无法减少数量。
因此,我必须将结果写入临时表或直接SELECT
将它们作为过程的结果。我决定对SELECT
他们。但是,当我尝试用 省略 8000 个字符的限制时EXEC OPENQUERY(AnalysisServerName, 'MDX QUERY ...') AT AnalysisServerName
,我无法SELECT
甚至将它们保存到临时表中,因为它发生在存储过程中并且不允许嵌套(遵循此线程)。
我希望我能做到
SELECT column1, column2 FROM (EXEC OPENQUERY(AnalysisServerName, 'MDX Query') AT AnalysisServerName)
即使我可以直接在分析服务器上执行很长的 MDX 查询
DECLARE @myStatement VARCHAR(MAX)
SET @myStatement = 'OPENQUERY(AnalysisServerName, 'MDX Query')'
EXECUTE (@myStatement) AT AnalysisServerName
我无法对存储过程中的结果做任何事情,因为
DECLARE @myStatement VARCHAR(MAX)
SET @myStatement = 'SELECT column1, column2 FROM OPENQUERY(AnalysisServerName, 'MDX Query')'
EXECUTE (@myStatement) AT AnalysisServerName
不被允许。
那么在这种情况下我能做些什么呢?
我需要
- 查询分析服务
OPENQUERY
, - 处理长度大于8000的查询,
- 将结果保存到临时表或直接选择它们。