層級關系:server.database.schema.object
客戶端通過實例連接數據庫。
sql server使用實例時,需使用登錄名(如默認的sa)。一個登錄名可以映射到多個數據庫的用戶名,而用戶可以擁有不同的架構,但架構只能有一個擁有者,包括用戶和角色等。
因此,登錄後要指定使用哪個數據庫。指定之後就以對應的用戶名進行操作。例如登錄名test_login,映射到table1的a用戶(只能映射數據庫的一個用戶,但可以映射多個數據庫),那麼當你使用test_login登錄之後就可以指定使用table1數據庫,然後以以a用戶的身份操作數據庫了。而a用戶又會有相應的架構,如果使用對象時沒有指定哪個架構,則用a的默認架構。
所以登錄名和用戶只是為了管理的方便,數據庫的數據層級關系與他們無關,刪除用戶也不會刪除架構下的東西。
詳見:http://www.cnblogs.com/ibrahim/archive/2010/06/21/sqlserver_loginname_username.html
oracle相對簡單一點。非並行系統中,一個數據庫對應一個實例,連上數據庫之後,一個用戶又對應一個Schema,因此經常說某某數據是哪個用戶名下的。
詳見:http://wenku.baidu.com/link?url=sol3aI92k_e8FESbOHh2SpWelu3ZJIe-fd_MFhESxq8dj3mGQ1MCAkC3Kg7GH-bcM1jdGrQ6vJXc_6Jm7yZD0cO4-Vou5g5Uv-MY7t2vmcO
如有錯誤之處,請大家指出。