我一直想弄清楚为什么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 回答
SQL Server模式只是对象的容器,例如表,存储过程等 . 数据库角色是一组主体,例如Windows登录,SQL服务器用户等 .
这个想法是你可以扮演一个说“IT”的角色,让所有IT用户都担任这个角色 . 然后你就可以得到一个名为“IT”的模式,并拥有属于IT的所有表 . 开箱即用SQL Server为数据库中的每个默认用户和角色创建匹配的模式,但我认为您的目的是根据组织的需要对其进行自定义 .
This article有关于所有者和模式之间差异的更多信息 . 堆栈溢出This question也可能有用 .
我从下面的链接中引用了以下内容 .
https://msdn.microsoft.com/en-us/library/bb669061(v=vs.110).aspx