我有一个数据库,根据用户的不同,我希望他们使用存储过程查看不同的内容。我不希望他们能够像select一样执行直接的SQL命令。这可能吗?
答案 0 :(得分:1)
您需要从所有组中删除用户,然后只对您希望他们拥有的存储过程使用GRANT。
-- Syntax for SQL Server and Azure SQL Database
-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
| permission [ ( column [ ,...n ] ) ] [ ,...n ]
[ ON [ class :: ] securable ] TO principal [ ,...n ]
[ WITH GRANT OPTION ] [ AS principal ]
答案 1 :(得分:1)
在过去,我必须提供对少数几个程序的访问权限,我会给出登录公共权限,而不是数据库映射。这将让他们登录但不做任何事情。然后我给每个存储过程选择了权限。我很确定我不需要做任何其他事情。
如果您有很多存储过程,那么本文将帮助您为此创建特定的角色/架构。
http://www.patrickkeisler.com/2012/10/grant-execute-permission-on-all-stored.html