我们创建了这样的过程:
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
,它将起作用。
我们必须配置哪个角色/权限以授予用户对该过程的访问权限?
谢谢。