允许选择SQL查询仅从存储过程执行

时间:2014-12-16 20:20:07

标签: sql-server

我有一个C#项目来自动化儿童玩具库的IN / OUT操作。我的应用程序使用ADO.NET与SQL Server数据库进行通信。我创建了一个名为“LiBX”的登录名。我拒绝所有数据库表的所有权限并授予所有存储过程的EXECUTE权限,但是当我运行该应用程序时,会出现一条错误消息:

  

对象'tableMatrials',数据库'STORDB',架构'dbo'

上的SELECT权限被拒绝

如何拒绝所有数据库表中的所有权限,并且只允许从存储过程执行SQL查询?

1 个答案:

答案 0 :(得分:1)

当您运行存储过程时,查询在调用者的上下文中执行,但可以设置为以所有者身份运行,从而提供更高级别的权限 - 使用EXECUTE AS OWNER。这可以是规避所有权链未完全覆盖的情况的有用方法。