我可以将SQL用户限制为仅存储过程吗?

时间:2016-11-21 11:46:06

标签: sql sql-server stored-procedures

我有一个数据库,根据用户的不同,我希望他们使用存储过程查看不同的内容。我不希望他们能够像select一样执行直接的SQL命令。这可能吗?

2 个答案:

答案 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