我已将更新触发器添加到数据库中的一个表中,该表基本上调用msdb数据库中的sp_update_schedule存储过程。
因此,对于我从Visual Studio访问的用户,我已授予该用户datareader、datawriter和ddladmin权限。我尝试以该用户的身份登录sql并运行触发器,它运行良好,同时使用sp_update_schedule更新msdb中的时间表。
然而,当我从web应用程序运行它时,当表的更新工作时,触发器失败,并出现以下错误
"对对象"sp_update_schedule"、数据库"msdb"、架构dbo"的EXECUTE权限被拒绝;
我做错了什么?
用户必须是sysadmin或担任其中一个角色。
https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-update-jobschedule-transact-sql?view=sql-服务器-ver15
权限默认情况下,sysadmin固定服务器角色的成员可以执行此存储过程。其他用户必须在msdb数据库中被授予以下SQL Server代理固定数据库角色之一:
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperator角色
有关这些角色的权限的详细信息,请参阅SQL Server代理固定数据库角色。
只有sysadmin的成员才能使用此存储过程来更新其他用户拥有的作业计划。