繁体   English   中英

具有存储的proc的SQL Server openquery()不返回数据

[英]SQL Server openquery() with stored proc not returning data

我有一个存储的proc,它返回一些数据(仅1行日期)。 当我只用exec调用此proc时,我得到了返回的数据,一切都很好。

我想通过视图使其可访问,因此我使用openquery()来做到这一点。 但是,当我这样做时,我收到错误消息:

Cannot process the object "exec GetDates". The OLE DB provider "SQLNCLI11" for linked server "LOCAL" indicates that either the object has no columns or the current user does not have permissions on that object.

我注意到这是临时表上的insert语句。 如果我将其注释掉,则不会出现此错误。 因此,我认为这是该错误消息的权限方面。 这是一个临时表,当我可以插入数据库中的任何真实表时,如何没有权限插入该表?

ALTER PROCEDURE [dbo].[GetDates]
AS
    DECLARE @capacityTable TABLE (dt datetime)
    DECLARE @dt datetime
    DECLARE curDates CURSOR FOR SELECT dt from calendar;

    -- loop over all dates we care about
    OPEN curDates;
    FETCH NEXT FROM curDates INTO @dt;
    WHILE @@FETCH_STATUS = 0
    BEGIN
        INSERT INTO @capacityTable (dt)
        VALUES(@dt)

        FETCH NEXT FROM curDates INTO @dt;
    END;
    CLOSE curDates;
    DEALLOCATE curDates;

    -- return the temp table results
    SELECT dt from @capacityTable;
RETURN

alter view GetDates_vw
as
select * from openquery(LOCAL, 'exec GetDates')

如果将SET NOCOUNT ON设置为openquery()函数,则该命令看起来像在EXEC之前。 有用。 不知道为什么,但是确实如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM