我正在配置新的SQL Server 2008 R2,当我尝试使用像
这样的语句向用户授予对存储过程的exec权限时,会出现以下错误grant exec on [schemaName].[StoredProcedureName] TO userName
我得到的错误:
无法授予,拒绝或撤消sa,dbo,实体所有者的权限, information_schema,sys或者你自己。
我可以授予其他权限,例如对同义词的select权限。我还能够根据登录创建登录和创建用户,并授予用户数据编写者和datareader角色。
我有public,serveradmin和sysadmin服务器角色。我在数据库中有db_owner角色,我试图授予权限。
我之前从未遇到过这个问题。
我错过了什么?
答案 0 :(得分:6)
我已经找到了收到消息的原因:
Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.
那是因为我试图授予权限的用户拥有那些对象的架构。
例如,其中一个存储过程是mySchema.usp_CreateUser(),userName是“appUser”。 “appUser”拥有架构“mySchema”。由于用户拥有架构,因此用户可以执行该过程。无需向用户授予exec权限。