我有一个只能在存储过程之外工作的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 FROM [Volumes]')列”)”。链接服务器“ LINKED_OLAP”的OLE DB提供程序“ MSOLAP.5”指示该对象没有列,或者当前用户对该对象没有权限。
我有权限,并且其中有列。该查询在存储过程外部运行,为什么在调用存储过程时它不起作用?我尝试删除datename
函数,并且存储过程正常工作。我怎样才能解决这个问题?我需要运行此功能。
答案 0 :(得分:0)
好的,我找到了解决方法。
我没有使用DATENAME函数,而是将其传递给了一个变量:
declare @TheMonth NVARCHAR(10) = DATENAME(MONTH, GETDATE())