背景
当我们在执行sql查询语句的时候会自动给表名加上这么一个标识,如图:
那么为什么会加上dbo呢?什么是dbo呢?
dbo简介
Ø 定义
dbo (dbo—-database owner)是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。
Ø 举例
如果用户 userA是固定服务器角色 sysadmin 的成员,并创建表 T1,则表 T1 属于 dbo,并以 dbo.T1 而不是 userA.T1 进行限定。相反,如果 userA不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 T1,则 T1 属于 userA,并限定为 userA.T1。该表属于 userA,因为该成员没有将表限定为 dbo.T1。
也就是说通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称。
Ø 好处
我们知道无论是建表、存储过程、视图等数据库对象时,其对应的所有者是创建它的用户。它的所以的权限等等均属于是该用户的。别的用户要是想要引用等等,必须加上相关的前缀,这样造成了很多不必要的麻烦,并且可能因为引用的问题不对,造成程序的混乱和出错,故而问题的产生点却仅仅是一个很小的知识点,故而设置其权限是dbo会提供给我们很多的方便。