【數據庫學習筆記】什么是DBO?


  剛開始使用SQL server,對DBO不是很理解。在網絡上搜尋了一些他人的理解,現摘抄如下。

 來源網址:

  http://bbs.csdn.net/topics/200051355

  http://bbs.csdn.net/topics/100179549

  我也上百度找了一下,有兩個命案比較像。

1. dbo是一個構架(schema),在sql2005中,表的調用格式如下:"數據庫名.構架名.表名",同一個用戶可以被授權訪問多個構架,也可以被禁止訪問某個或多個構架,這就是2005中提倡的"用戶與構架分離"的概念. 在2005中,如果在創建表時沒有指定構架(schema),那么系統默認該表的構架是dbo,所以會出現很多表名前自動加上dbo.字符樣式. 
2.DBO是每個數據庫的默認用戶,具有所有者權限,即DbOwner 


這兩答案,看上去感覺是大致一樣,卻明顯有差別,真是頭痛,希望對SQL有多年了解的前輩們給解釋或下一個定論,到底是“構架”還是“默認用戶”?

---------------------------------------------------------------------------------------------------------------------------

dbo是默認用戶也是架構,
dbo作為架構是為了更好的與2000兼容,
在2000中DataBaseName.dbo.TableName解釋為:數據庫名.用戶名.表名,
在2005中DataBaseName.dbo.TableName解釋為:數據庫名.架構名.表名,
這樣2000中的代碼移植到2005中就不會報錯(dbo在2005中是默認的架構,創建表時,如不指定架構,則默認為屬於dbo為個架構)。

----------------------------------------------------------------------------------------------------------------------------------

雖然 SQL Server 2000 包含 CREATE SCHEMA 語句,但實際上並不會像上面所定義的那樣創建架構。在 SQL Server 2000 中,數據庫用戶和架構是隱式連接在一起的。每個數據庫用戶都是與該用戶同名的架構的所有者。對象的所有者在功能上與包含它的架構所有者相同。因而,SQL Server 2000 中的完全限定名稱的“架構”也是數據庫中的用戶。

在 SQL Server 2005 中,架構獨立於創建它們的數據庫用戶而存在。可以在不更改架構名稱的情況下轉讓架構的所有權。並且可以在架構中創建具有用戶友好名稱的對象,明確指示對象的功能。

SQL Server 2005 還引入了“默認架構”的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2000 中,首先檢查的是調用數據庫用戶所擁有的架構,然后是 DBO 擁有的架構。在 SQL Server 2005 中,每個用戶都有一個默認架構,用於指定服務器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則數據庫用戶將把 DBO 作為其默認架構。

-----------------------------------------------------------------------------------------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM