加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 授予执行存储过程的角色

发布时间:2020-12-12 08:54:32 所属栏目:MsSql教程 来源:网络整理
导读:我有一个代理用户,我正在尝试添加到可以执行所有存储过程的角色.使用其他StackOverflow帖子,我已经能够将这个脚本放在一起 USE abcCreate ROLE db_execgoGRANT EXECUTE TO db_execgoEXEC sp_addrolemember 'db_exec','abc_user'go 当我尝试运行我的存储过程时
我有一个代理用户,我正在尝试添加到可以执行所有存储过程的角色.使用其他StackOverflow帖子,我已经能够将这个脚本放在一起
USE abc

Create ROLE db_exec
go

GRANT EXECUTE TO db_exec
go

EXEC sp_addrolemember 'db_exec','abc_user'
go

当我尝试运行我的存储过程时,根据我的错误处理,我仍然会收到此错误.

The EXECUTE permission was denied on the object ‘sp_OACreate’,database ‘mssqlsystemresource’,schema ‘sys’.

如何让abc_user执行sp_OACreate?

解决方法

除了处于sysadmin角色之外,还需要在master数据库上授予执行权限,这些进程实际驻留在这些数据库中
use master
go

grant exec on sp_OACreate to abc_user
GO

运行之后,您可以使用以下内容验证您是否有权执行该过程

SELECT * 
FROM master.sys.database_permissions [dp] 
JOIN master.sys.system_objects [so] ON dp.major_id = so.object_id
JOIN master.sys.sysusers [usr] ON 
     usr.uid = dp.grantee_principal_id AND usr.name = 'abc_user'
WHERE permission_name = 'EXECUTE' AND so.name = 'sp_OACreate'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读