SQL Server权限和所有权链接

时间:2015-07-31 11:11:35

标签: permissions sql-server-2008-r2

我正在构建一个由SQL Server 2008 R2后端和MS Access前端组成的应用程序。 所有数据都保存在SQL Server中。 MS Access只是一组表单,控件和VBA ADO对象,它们调用SQL服务器上的存储过程,即。用户仅通过存储过程与SQL Server连接。 这些存储过程是不改变数据库状态的存储过程(例如,从表/视图/函数中选择)和一些改变状态的存储过程(例如,插入/更新/删除/合并)

在SQL Server上,我有一个名为' ADG'的AD组,它既是服务器登录又是数据库用户。 MS Access前端的用户是ADG的成员。 所有SQL Server数据库对象(表,视图,函数和存储过程)都在一个称为' ABC'的特定模式下。这是dbo拥有的。数据库中还有其他模式,全部由dbo拥有。

我一直在阅读“所有权链”'并希望澄清以下内容:

  1. 是' dbo'所有者'在ABC' ABC下的表格,视图,功能和存储过程凭借其对ABC' ABC的所有权的架构模式

  2. 鉴于上述应用程序的设置并取决于对1.的回答,是' EXECUTE'在ABC架构上,唯一的权限我 是否需要ADG,还是需要其他人?

  3. 赞赏任何澄清的帮助。

1 个答案:

答案 0 :(得分:0)

查看https://msdn.microsoft.com/en-us/library/ms191465.aspx以查看权限层次结构的完整图片。

  1. 如果所有对象都在同一个ABC模式中,那么模式的所有者实际上是底层对象的所有者。再次,请参阅上面链接中的图表以获得清晰的图片。

    1. EXECUTE是执行存储过程的特定权限。您可以对函数执行相同的操作,除非函数返回表,然后您需要SELECT权限。因此,如果您在SCHEMA :: ABC TO adg上执行GRANT EXECUTE,那么您只允许adg运行sprocs。根据sprocs的编写方式,他们仍然可能无法访问数据。在线查找有关SQL Server书籍权限的详细信息,详细了解您需要授予的内容(https://msdn.microsoft.com/en-us/library/ms191291.aspx