一.什么是架構(gòu)?
在一個數(shù)據(jù)庫中可以有多個應(yīng)用的數(shù)據(jù)表,這些不同應(yīng)用的表可以放在不同的schema之中,同時,每一個schema對應(yīng)一個用戶,不同的應(yīng)用可以以不同的用戶連接數(shù)據(jù)庫,這樣,一個大數(shù)據(jù)庫就可以根據(jù)應(yīng)用把其表分開來管理。
不同的schema之間它們沒有直接的關(guān)系,不同的shcema之間的表可以同名,也可以互相引用(但必須有權(quán)限),在沒有操作別的schema的操作根權(quán)下,每個用戶只能操作它自己的schema下的所有的表。不同的schema下的同名的表,可以存入不同的數(shù)據(jù)(即schema用戶自己的數(shù)據(jù))
實際上就是表名前面的名稱例如:dbo.T_Users, Admins.T_Powers 等
參考:http://www.tkk7.com/gbk/archive/2008/09/22/158080.html
二.用戶架構(gòu)分離的好處
將架構(gòu)與數(shù)據(jù)庫用戶分離對管理員和開發(fā)人員而言有下列好處:
1.多個用戶可以通過角色成員身份或 Windows 組成員身份擁有一個架構(gòu)。這擴展了允許角色和組擁有對象的用戶熟悉的功能。
2.極大地簡化了刪除數(shù)據(jù)庫用戶的操作。
3.刪除數(shù)據(jù)庫用戶不需要重命名該用戶架構(gòu)所包含的對象。因而,在刪除創(chuàng)建架構(gòu)所含對象的用戶后,不再需要修改和測試顯式引用這些對象的
應(yīng)用程序。
4.多個用戶可以共享一個默認架構(gòu)以進行統(tǒng)一名稱解析。
5.開發(fā)人員通過共享默認架構(gòu)可以將共享對象存儲在為特定應(yīng)用程序?qū)iT創(chuàng)建的架構(gòu)中,而不是 DBO 架構(gòu)中。
6.可以用比早期版本中的粒度更大的粒度管理架構(gòu)和架構(gòu)包含的對象的權(quán)限。
7.完全限定的對象名稱現(xiàn)在包含四部分:server.database.schema.object。
三.默認架構(gòu):
SQL Server 2005 引入了“默認架構(gòu)”的概念,用于解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2000 中,首先檢查的是調(diào)用數(shù)據(jù)庫用戶所擁有的架構(gòu),然后是 DBO 擁有的架構(gòu)。在 SQL Server 2005 中,每個用戶都有一個默認架構(gòu),用于指定服務(wù)器在解析對象的名稱時將要搜索的第一個架構(gòu)。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 選項設(shè)置和更改默認架構(gòu)。如果未定義 DEFAULT_SCHEMA,則數(shù)據(jù)庫用戶將把 DBO 作為其默認架構(gòu)。
四.對構(gòu)架名的操作:
schema_name 當(dāng)前數(shù)據(jù)庫中的架構(gòu)名稱,會將對象移入其中。其數(shù)據(jù)類型不能為 SYS 或 INFORMATION_SCHEMA。
object_name 要移入架構(gòu)中的架構(gòu)包含對象的一部分或兩部分名稱。
table_name 當(dāng)前數(shù)據(jù)庫中的表名
create schema schema_name -- 創(chuàng)建構(gòu)架名 (前數(shù)據(jù)庫中并不存在)
drop schema schema_name -- 刪除構(gòu)架名
ALTER SCHEMA schema_name TRANSFER table_name -- 修改表名的構(gòu)架名
select Ub.name as Schemas,Ua.name as ObjectName
from sysobjects Ua inner join sys.schemas Ub on Ua.uid = Ub.schema_id
where Ua.name= 'table_name' -- 查看表所屬的構(gòu)架名
注:
以上Sql 語句在 Sql 2005中可以使用,但不知道對其他版本有沒有影響!