我正在寻找让数据库用户只有权执行存储过程和函数的方法。这需要是一个动态设置,以便每次添加存储过程或函数时,他们都有权使用它。
约束 我无法更改架构的名称或存储的程序或函数。
答案 0 :(得分:7)
在SQL Server 2005及更高版本中,您可以创建新的数据库角色
CREATE ROLE db_executor
然后授予该角色执行权限 - 不指定任何内容。
GRANT EXECUTE TO db_executor
此角色现在可以在数据库中执行所有存储过程和函数 - 它也可以执行您添加到数据库的任何 future 存储过程!
现在只需将此角色添加到您的用户即可:
exec sp_addrolemember @rolename = 'db_executor', @membername = 'your-user-name-here'
PS:当然,您也可以将此权限授予一个用户:
GRANT EXECUTE TO your-user-name
然而,这使得管理成为一场噩梦 - 所以我不会走这条路......