我一直在试图弄清楚为什么SQL Server有db_owner
架构和db_owner
角色?这非常令人困惑。我一直在寻找答案,到目前为止,这是我的理解:
DBO
是默认架构。如果其中任何一项不正确,请告诉我。但我认为到目前为止一切顺利。现在我的问题是:
db_owner
架构究竟是什么?在同一个对话框中,您将“默认架构”定义为dbo
。为什么两者不一样?如果默认情况下SQL Server使用dbo
创建所有对象,那么db_owner
使用什么?db_accessadmin
给你的是什么?db_owner
架构和db_accessadmin
架构下创建对象?换句话说,是否有人合法地使用这些模式?答案 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