SQL SERVER中架構的理解

來源:互聯網
上載者:User

在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.表名,建立者在資料庫中如果不是屬於其它特殊組的成員,是不能對自己建立的表進行任何修改和查詢的,那就相當於把自己賺的錢存進了別人的銀行卡,自己卻取不出來。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.