我可能遗漏了一些明显的东西或以错误的方式处理这个问题,但它是这样的:
我在 SQL Server 2005 中编写了一个标量 CLR 函数。它有一个参数 ( int
) 并返回一个varchar(2000)
. 我无法弄清楚如何专门向 sysadmin 角色授予权限并限制任何其他角色(包括 db_owner)执行它。
我猜 CLR 函数的授予和撤销权限与任何其他 UDF 相同。这是一个敏感函数,因为它会解密存储在应用程序的 SecurityUser 表中的密码。我不希望任何人能够运行它,除了 sysadmin 角色的成员。
在数据库中,我首先尝试从数据库授予 sysadmin:
grant execute ON dbo.fCrossTabDx1 TO sysadmin
当然收到错误:
消息 15151,级别 16,状态 1,行 1
找不到用户 'sysadmin',因为它不存在或您没有权限。
然后我尝试授予权限db_securityadmin
,这是数据库中的一个角色,但出现错误:
消息 4617,级别 16,状态 1,第 1 行
无法授予、拒绝或撤销特殊角色的权限。
因此,如果可能的话,将不胜感激有人引导我朝着正确的方向前进。
- 我可以限制具有 db_owner 权限的用户执行函数吗?
- 我可以只允许一个函数的 sysadmin 角色执行权限吗?
谢谢。