Не удается найти объект «reportsProc», так как он не существует или у вас нет разрешения - PullRequest
0 голосов
/ 22 ноября 2018

Мы создали процедуру, подобную этой:

CREATE PROCEDURE [dbo].[reportsProc]
    @IstGroup INT,
    ...
AS
BEGIN
    SET NOCOUNT ON;

    IF @IstGroup = 0
    BEGIN
        SELECT K.*
        FROM V_xyz K
    END
    ELSE
    BEGIN
        SELECT K.*
        FROM V_xyz2 K


    END
END

GRANT EXECUTE ON [dbo].[reportsProc] TO [user_abz]

Примечание: V_xyz и V_xyz2 являются представлениями.

Если пользователь пытается выполнить процедуру, существует исключение SQL Server:

Не удается найти объект «reportsProc», так как он не существует или у вас нет разрешения

Мы пытались предоставить права на выполнение для некоторых объектов, на которые есть ссылки, но это не удалосьне работает.

Если мы добавим пользователя user_abz к роли базы данных db_owner, это сработает.Но мы не хотим, чтобы у пользователя было слишком много прав.

Если мы добавим пользователя user_abz к роли базы данных db_ddladmin, db_datareader или db_datawriter, это не сработает.

Если мы добавим пользователя user_abz к роли базы данных db_securityadmin, это будет работать.

Какую роль / право мы должны настроить, чтобы предоставить пользователю доступ к процедуре?

Спасибо завперед.

...