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