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

