dbo是默認用戶也是架構
dbo作為架構是為了更好的與2000兼容,
在2000中DataBaseName.dbo.TableName解釋為:數據庫名.用戶名.表名,
在2005中DataBaseName.dbo.TableName解釋為:數據庫名.架構名.表名,
這樣2000中的代碼移植到2005中就不會報錯(dbo在2005中是默認的架構,創建表時,如不指定架構,則默認為屬於dbo為個架構)。
在2000中:
dbo 是 database owner 的縮寫, 是數據庫對象所有者SQL SERVER 中的 對象的標准寫法是 databasename.databaseownername.objectname
數據庫所有者 (dbo) dbo 是具有在數據庫中執行所有活動的暗示性權限的用戶。將固定服務器角色 sysadmin 的任何成員都映射到每個數據庫內稱為 dbo 的一個特殊用戶上。另外,由固定服務器角色 sysadmin 的任何成員創建的任何對象都自動屬於 dbo。
在2005中:
dbo是一個構架(schema),與sql2000不同的是,在sql2005中,表的調用格式如下:"數據庫名.構架名.表名",同一個用戶可以被授權訪問多個構架,也可以被禁止訪問某個或多個構架,這就是2005中提倡的"用戶與構架分離"的概念.
在2005中,如果在創建表時沒有指定構架(schema),那么系統默認該表的構架是dbo,所以會出現很多表名前自動加上dbo.字符樣式.
什么時候使用:
數據庫名.構架名.表名,這種方式在相同的數據服務器,但是所用表不在當前編碼的數據庫內。
例1:在數據庫A中有表dbo.T1,B中有dbo.T2。
在數據庫B里調用T1這時候要寫成 select * from A.dbo.T1
例2:使用鏈接數據庫的時候:
SELECT * FROM [連接名].[數據庫名].[架構名].[表名]
SELECT * FROM testlink.test.dbo.t1
