【问题标题】:OpenQuery inside a stored procedure存储过程中的 OpenQuery
【发布时间】: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 函数并且存储过程有效。我怎样才能解决这个问题?我需要这个函数来运行。

【问题讨论】:

标签: sql-server stored-procedures mdx openquery


【解决方案1】:

好的,我找到了解决方法。

我没有使用 DATENAME 函数,而是将它传递给一个变量:

declare @TheMonth NVARCHAR(10) = DATENAME(MONTH, GETDATE())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    相关资源
    最近更新 更多