我有一个C#项目来自动化儿童玩具库的IN / OUT操作。我的应用程序使用ADO.NET与SQL Server数据库进行通信。我创建了一个名为“LiBX”的登录名。我拒绝所有数据库表的所有权限并授予所有存储过程的EXECUTE
权限,但是当我运行该应用程序时,会出现一条错误消息:
对象'tableMatrials',数据库'STORDB',架构'dbo'
上的SELECT权限被拒绝
如何拒绝所有数据库表中的所有权限,并且只允许从存储过程执行SQL查询?
答案 0 :(得分:1)
当您运行存储过程时,查询在调用者的上下文中执行,但可以设置为以所有者身份运行,从而提供更高级别的权限 - 使用EXECUTE AS OWNER
。这可以是规避所有权链未完全覆盖的情况的有用方法。