SQL Server角色,模式,用户

Bud*_*ric 40 sql-server sql-server-2005

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

  1. 所有表和对象(例如约束等)都属于模式. DBO是默认架构.
  2. 可以向用户授予编辑每个对象或模式的许可.架构权限将权限扩展到该架构中的所有对象.因此,您不必为每个单独的对象授予权限.
  3. 为方便起见,角色将权限组合在一起

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

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

tbr*_*fni 26

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

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

本文提供了有关所有者和架构之间差异的更多信息. Stack Overflow上的这个问题也可能有用.