SQL Server:dbo 与 db_owner 角色成员?

SQL Server:dbo 与 db_owner 角色成员?

我正在将用户分配到新数据库。用户作为默认 dbo 用户与将登录分配为 db_owner 角色成员有何区别?

答案1

每个数据库都应该有一个 dbo 用户,默认情况下,该用户被分配给 db_owner 数据库角色。还有一个 dbo 架构,它部分是 SQL Server 2000 及更早版本的保留,其中用户和架构是同一个。它也有点特殊,因为如果在用户的默认架构中找不到对象(假设对象名称未用架构名称限定),查询将在 dbo 架构中查找对象。

您只能将单个登录名映射到数据库中的 dbo 用户(任何数据库用户都是如此),但您可以为 db_owner 角色分配任意数量的用户,从而使他们基本上完全控制数据库。

如果为数据库用户设置了默认架构,则在安全性方面不会产生任何影响。它仅控制在未提供特定架构名称和对象名称时默认使用哪个架构来创建和引用对象。在 SQL Server 2000 及更早版本中,由于没有区分用户和架构,因此用户的默认架构始终是其自身,除非另有明确指定,例如“CREATE TABLE dbo.test_table...”与“CREATE TABLE test_table...”。(请注意,对于在用户的默认架构中找不到的对象,仍使用 dbo 架构。)

答案2

默认 dbo 用户无法查看任何数据库对象。db_owner 可以对数据库执行所有配置和维护活动

相关内容