LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL Server中数据库表名前面的dbo.是什么意思?

admin
2020年8月12日 0:54 本文热度 7329

dbo 就是 Database Owner(即DbOwner,数据库的所有者)的缩写,DBO 是每个数据库的默认用户,具有所有者权限。
它是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。
你具体对表操作的时候可以忽略它,不用管它,直接对你的表操作即可。通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称。
比如:你以User1登录进去并建表Table,而未指定DBO,当用户User2登进去想访问Table时就得知道这个Table是你User1建立的,要写上User1.Table,如果他不知道是你建的,则访问会有问题。如果你建表时把所有者指给了Dbo,则别的用户进来时写上Dbo.Table就行了,不必知道User1。
不光表是如此,视图等等数据库对象建立时也要如此才算是好。
建表、存储过程、视图等数据库对象时,其对应的所有者是创建它的用户。则除了该用户其他登录用户要引用这些东东时,都要加上前缀,很是麻烦。而且,程序因此易出错,你查来查去问题确出在这,浪费你时间。

另外,为了避免上述问题,在创建数据库表时,表名称中切勿使用符号“.”,否则可能会导致数据库表名称中“.”前面部分被错误识别为创建表用户,导致数据库表操作失败,由于事实上并不真实存在此用户,此时即使是sa管理员账号也会提示无权限操作。

该文章在 2020/8/12 1:14:05 编辑过

全部评论1

admin
2020年8月12日 1:15
dbo 和 Person 都是架构名,默认的架构都是以 dbo 开头的。
在不同的数据库之间调用数据时,我们可以使用“数据库名.构架名.表名”这种方式获取到其他库表数据。
当在同一个数据库中时就可以省略数据库名,只需要“构架名.表名”。
在同一个的数据库架构的情况下,只需要直接用表名就可以了,select * from 表。
如果存在架构有多种的情况下,就需要在调用中用“构架名.表名”,select * from 架构名.表。
他们起到识别功能,比方说表名相同都叫 a,但是一个是 dbo 架构的,一个是 Person 的,在调用过程中是不一样的:
select * from dbo.表
select * from person.表
不写架构名则默认为dbo。

该评论在 2020/8/12 1:23:22 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved