SQL Server角色,模式,用户

时间:2009-07-20 18:28:05

标签: sql-server sql-server-2005

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

  1. 所有表和对象(例如约束等)都属于架构。 DBO是默认架构。
  2. 可以授予用户编辑每个对象或架构的权限。架构权限将权限扩展到该架构中的所有对象。因此,您无需为每个单独的对象授予权限。
  3. 为方便起见,角色将权限组合在一起。
  4. 如果其中任何一项不正确,请告诉我。但我认为到目前为止一切顺利。现在我的问题是:

    1. SQL Server Management Studio的“数据库用户”对话框中看到的db_owner架构究竟是什么?在同一个对话框中,您将“默认架构”定义为dbo。为什么两者不一样?如果默认情况下SQL Server使用dbo创建所有对象,那么db_owner使用什么?
    2. 为什么用户想要拥有架构?您已经分配了权限/角色。拥有db_accessadmin给你的是什么?
    3. 您能举例说明何时在db_owner架构和db_accessadmin架构下创建对象?换句话说,是否有人合法地使用这些模式?

2 个答案:

答案 0 :(得分:24)

SQL Server架构只是对象的容器,例如表,存储过程等。数据库角色是一组主体,例如Windows登录,sql server用户等。

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

This article提供了有关所有者和架构之间差异的更多信息。 Stack Overflow上的This question也可能有用。

答案 1 :(得分:1)

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

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

  

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

     
      
  • dbo
  •   
  • guest
  •   
  • sys
  •   
  • INFORMATION_SCHEMA
  •