SQLSERVER 2005架構詳解

SQLSERVER 2005架構詳解
 
在sqlserver 2005中,可能你們在工做或學習的時候會常常發現這樣一些問題,你使用一個帳戶在數據庫中建立了一張表,卻發現你本身建立的表卻沒有修改和查詢的權限,這是一件很鬱悶的事情,在sqlserver2000中卻不存在這樣的問題,那爲何在2005中會出現這樣的事情,這樣的設置能夠帶來哪些好處?其實致使這一問題的緣由主要在於2005中多了一個新的概念—架構。
         首先咱們來看一下msdn中對架構的定義:架構(Schema)是造成單個命名空間的數據庫實體的集合。命名空間是一個集合,其中每一個元素的名稱都是惟一的。在這裏,咱們能夠將架構當作一個存放數據庫中對象的一個容器。
架構實際上在sqlserver2000中就已經存在,當咱們使用查詢分析器去查詢一個表的時候,一個完整的表的名稱應該包括服務器名.數據庫名.用戶名.對象名,而在sqlserver2005中一個表的徹底限定名稱應該爲服務器名.數據庫名.架構名.對象名
在2000中,假若有一個帳戶tt在test數據庫中建立了一張表table1的時候,在服務器上對查詢的語句應爲select * from test.tt.table1,也就是說,在sqlserver 2000中一張表所屬的架構默認就是表的建立者的登陸名稱,用戶能夠和修改他所建立的全部數據庫對象。但在2005中已經將用戶和其建立對象所屬架構的關聯取消了,而加入了一個全新的架構體系,這樣作的優勢主要在於下面幾個方面:
1.          多個用戶能夠經過角色(role)或組(Windows groups)成員關係擁有同一個架構。在2005中,每一個數據庫中的固定數據庫角色都有一個屬於本身的架構,若是咱們建立一個表,給它指定的架構名稱爲db_ddladmin,那麼任何一個屬於db_ddladmin中的用戶都是能夠去查詢、修改和刪除屬於這個架構中的表,可是其它不屬於這個組的用戶是不行的,有一點必須注意,db_dbdatareader組的成員能夠查看全部數據庫中的表,db_dbdatawriter組成員能夠修改全部數據庫中的表,db_owner組成員能夠對數據庫全部表進行全部操做,這幾個組的成員能夠經過角色獲取到在數據庫中的特殊權限。
2.         刪除數據庫用戶變得極爲簡單。在 SQL Server 2000 中,用戶(User)和架構是隱含關聯的,即每一個用戶擁有與其同名的架構。所以要刪除一個用戶,必須先刪除或修改這個用戶所擁有的全部數據庫對象,就好比一個員工要離職要刪除他的帳戶的時候,還得將他所建立的表和視圖等都刪除,影響過大。將架構和對象者分離後就不在存在這樣的問題,刪除用戶的時候,對數據庫對象是沒有任何影響的。
3.         共享缺省架構使得開發人員能夠爲特定的應用程序建立特定的架構來存放對象,這比僅使用管理員架構(DBO schema)要好。
4.         在架構和架構所包含的對象上設置權限(permissions)比之前的版本擁有更高的可管理性。
5.         區分不一樣業務處理須要的對象,例如,咱們能夠把公共的表設置成pub的架構,把銷售相關的設置爲sales,這樣管理和訪問起來更容易.
大多數用戶在建立對象的時候習慣直接輸入對象名而將對象的架構名稱省略,在2005中,會給用戶建立的這樣的表加上一個缺省的架構,用戶若是沒有對本身的默認架構作設置,那缺省架構就是dbo,也就是說,若是一個db_ddladmin的成員在數據庫中建立一個沒有加上架構名稱的表,這個表在數據庫中的完整名稱應該是dbo.表名,建立者在數據庫中若是不是屬於其它特殊組的成員,是不能對本身建立的表進行任何修改和查詢的,那就至關於把本身賺的錢存進了別人的銀行卡,本身卻取不出來。
相關文章
相關標籤/搜索