1.作用:
(1)DBO是每個數據庫的默認用戶,具有所有者權限,即DbOwner;
通過用DBO作為所有者來定義對象,能夠使數據庫中的任何用戶引用而不必提供所有者名稱。
(2)至於為什么要使用所有者進行限定,是因為不同的用戶可能創建同名的對象,例如登錄名me和登錄名you在pubs數據庫中分別創建了用戶名me,和 you,這二個用戶都創建了
testtable這個同名表,而這二個表雖然同名但結構或數據可能完全不同,為了避免調用錯誤,必須使用所有者名稱進行限定.
如果你建表時把所有者指給了Dbo,則別的用戶進來時寫上Dbo.Table就行了,不必知道User1。
(1)將me用戶的數據庫角色設置為db_owner,否則無法訪問其他用戶(包括dbo用戶)創建的對象.(企業管理器-> 用戶,右鍵菜單 <屬性> 中設置)
(2)使用所有者進行限定.
例如me訪問you創建的testtable:
select * from you.testtable
不光表是如此,視圖等等數據庫對象建立時也要如此才算是好。
通過用DBO作為所有者來定義對象,能夠使數據庫中的任何用戶引用而不必提供所有者名稱。
(2)至於為什么要使用所有者進行限定,是因為不同的用戶可能創建同名的對象,例如登錄名me和登錄名you在pubs數據庫中分別創建了用戶名me,和 you,這二個用戶都創建了
testtable這個同名表,而這二個表雖然同名但結構或數據可能完全不同,為了避免調用錯誤,必須使用所有者名稱進行限定.
2.舉例:
比如:你以User1登錄進去並建表Table,而未指定DBO,當用戶User2登進去想訪問Table時就得知道這個Table是你User1建立的,要寫上User1.Table,如果他不知道是你建的,則訪問會有問題。如果你建表時把所有者指給了Dbo,則別的用戶進來時寫上Dbo.Table就行了,不必知道User1。
3.擴展:
怎樣來調用別的用戶創建的對象呢?例如me用戶訪問you用戶創建的表或訪問dbo創建的表.此種情況,必須同時滿足二個條件:(1)將me用戶的數據庫角色設置為db_owner,否則無法訪問其他用戶(包括dbo用戶)創建的對象.(企業管理器-> 用戶,右鍵菜單 <屬性> 中設置)
(2)使用所有者進行限定.
例如me訪問you創建的testtable:
select * from you.testtable
不光表是如此,視圖等等數據庫對象建立時也要如此才算是好。