首页 文章

SQL Server角色,模式,用户

提问于
浏览
37

我一直想弄清楚为什么SQL Server有 db_owner 架构和 db_owner 角色?这非常令人困惑 . 我一直在寻找答案,到目前为止,这是我的理解:

  • 所有表和对象(例如约束等)都属于模式 . DBO 是默认架构 .

  • 可以授予用户编辑每个对象或架构的权限 . 架构权限将权限扩展到该架构中的所有对象 . 因此,您不必为每个单独的对象授予权限 .

  • 角色将权限组合在一起以方便使用 .

如果其中任何一个不正确,请告诉我 . 但我认为到目前为止一切都那么好 . 现在我的问题是:

  • 在SQL Server Management Studio的"Database User"对话框中看到的 db_owner 架构究竟是什么?在同一个对话框中,将"Default Schema"定义为 dbo . 为什么两者不一样?如果默认情况下SQL Server使用 dbo 来创建所有对象, db_owner 的用途是什么?

  • 为什么用户想要拥有架构?您已经分配了权限/角色 . 拥有 db_accessadmin 给你什么?

  • 您能举例说明何时在 db_owner schema和 db_accessadmin schema下创建对象?换句话说,有人合法地使用这些模式吗?

2 回答

  • 24

    SQL Server模式只是对象的容器,例如表,存储过程等 . 数据库角色是一组主体,例如Windows登录,SQL服务器用户等 .

    这个想法是你可以扮演一个说“IT”的角色,让所有IT用户都担任这个角色 . 然后你就可以得到一个名为“IT”的模式,并拥有属于IT的所有表 . 开箱即用SQL Server为数据库中的每个默认用户和角色创建匹配的模式,但我认为您的目的是根据组织的需要对其进行自定义 .

    This article有关于所有者和模式之间差异的更多信息 . 堆栈溢出This question也可能有用 .

  • 0

    我从下面的链接中引用了以下内容 .

    https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx

    SQL Server附带了10个预定义的模式,这些模式与内置数据库用户和角色具有相同的名称 . 这些主要是为了向后兼容 . 如果不需要,可以删除与固定数据库角色具有相同名称的模式 . 您无法删除以下架构:dbo guest sys INFORMATION_SCHEMA

相关问题