【发布时间】:2018-06-19 16:12:04
【问题描述】:
我有一个只能在存储过程之外工作的 OpenQuery。
这行得通:
SELECT *
FROM OpenQuery(LINKED_OLAP,
'SELECT [Measures].[Sales] on columns FROM [Volumes] WHERE ([Calendar].[Day].&[' + convert(nvarchar(4),@Date,120) + ']&[' + DATENAME(MONTH, GETDATE()) + ']&[' + RIGHT((convert(nvarchar(10),@Date,120)),2) + ']')
当我把它放在一个存储过程中,然后执行这个存储过程时,我得到了错误:
无法处理对象“SELECT * FROM OpenQuery(LINKED_OLAP,'SELECT [Measures].[Sales] on columns FROM [Volumes]')”。链接服务器“LINKED_OLAP”的 OLE DB 提供程序“MSOLAP.5”表明该对象没有列或当前用户对该对象没有权限。
我有权限,里面有列。查询在存储过程之外运行,为什么我调用存储过程时它不起作用?我尝试删除 datename 函数并且存储过程有效。我怎样才能解决这个问题?我需要这个函数来运行。
【问题讨论】:
-
@dfundako 感谢您的评论。我遵循了您发布的网址中提出的解决方案,但我得到了完全相同的错误。
标签: sql-server stored-procedures mdx openquery