首頁(yè) 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語(yǔ) | 商務(wù)英語(yǔ) | 公共英語(yǔ) | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語(yǔ) | 成人英語(yǔ)三級(jí) | 申碩英語(yǔ) | 攻碩英語(yǔ) | 職稱日語(yǔ) | 日語(yǔ)學(xué)習(xí) | 法語(yǔ) | 德語(yǔ) | 韓語(yǔ)
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問(wèn) | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國(guó)際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書(shū)資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國(guó)際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語(yǔ)學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

數(shù)據(jù)庫(kù):SqlServer用戶名和登錄名的關(guān)系總結(jié)

數(shù)據(jù)庫(kù):SqlServer用戶名和登錄名的關(guān)系總結(jié)。

  登錄名:服務(wù)器方的一個(gè)實(shí)體,使用一個(gè)登錄名只能進(jìn)入服務(wù)器,但是不能讓用戶訪問(wèn)服務(wù)器中的數(shù)據(jù)庫(kù)資源。每個(gè)登錄名的定義存放在master數(shù)據(jù)庫(kù)的syslogins表中

  用戶名:一個(gè)或多個(gè)登錄對(duì)象在數(shù)據(jù)庫(kù)中的映射,可以對(duì)用戶對(duì)象進(jìn)行授權(quán),以便為登錄對(duì)象提供對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限。用戶定義信息存放在每個(gè)數(shù)據(jù)庫(kù)的sysusers表中。

  SQLSERVER把登錄名與用戶名的關(guān)系稱為映射。用登錄名登錄SQLSERVER后,在訪問(wèn)各個(gè)數(shù)據(jù)庫(kù)時(shí),SQLSERVER會(huì)自動(dòng)查詢此數(shù)據(jù)庫(kù)中是否存在與此登錄名關(guān)聯(lián)的用戶名,若存在就使用此用戶的權(quán)限訪問(wèn)此數(shù)據(jù)庫(kù),若不存在就是用guest用戶訪問(wèn)此數(shù)據(jù)庫(kù)(guest是一個(gè)特殊的用戶名,后面會(huì)講到)。

  一個(gè)登錄名可以被授權(quán)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù),但一個(gè)登錄名在每個(gè)數(shù)據(jù)庫(kù)中只能映射一次。即一個(gè)登錄可對(duì)應(yīng)多個(gè)用戶,一個(gè)用戶也可以被多個(gè)登錄使用。好比SQLSERVER就象一棟大樓,里面的每個(gè)房間都是一個(gè)數(shù)據(jù)庫(kù).登錄名只是進(jìn)入大樓的鑰匙,而用戶名則是進(jìn)入房間的鑰匙.一個(gè)登錄名可以有多個(gè)房間的鑰匙,但一個(gè)登錄名在一個(gè)房間只能擁有此房間的一把鑰匙。

  鏈接或登錄Sql Server服務(wù)器時(shí)是用的登錄名而非用戶名登錄的,程序里面的鏈接字符串中的用戶名也是指登錄名。

  SQLSERVER中有幾個(gè)特殊的登錄名和用戶名:

  我們常見(jiàn)的dbo(用戶名)是指以sa(登錄名)或windows   administration(Windows集成驗(yàn)證登錄方式)登錄的用戶,也就是說(shuō)數(shù)據(jù)庫(kù)管理員在SQLSERVER中的用戶名就叫dbo,而不叫 sa,這一點(diǎn)看起來(lái)有點(diǎn)蹊蹺,因?yàn)橥ǔS脩裘c登錄名相同(不是強(qiáng)制相同,但為了一目了然通常都在創(chuàng)建用戶名時(shí)使用與登錄名相同的名字),例如創(chuàng)建了一個(gè)登錄名稱為me,那么可以為該登錄名me在指定的數(shù)據(jù)庫(kù)中添加一個(gè)同名用戶,使登錄名me能夠訪問(wèn)該數(shù)據(jù)庫(kù)中的數(shù)據(jù).當(dāng)在數(shù)據(jù)庫(kù)中添加了一個(gè)用戶me 后,之后以me登錄名登錄時(shí)在該數(shù)據(jù)庫(kù)中創(chuàng)建的一切對(duì)象(表,函數(shù),存儲(chǔ)過(guò)程等)的所有者都為me,如me.table1,me.fn_test(),而不是dbo.table1,dbo.fn_test().

  SQL Server中還有一個(gè)特殊的數(shù)據(jù)庫(kù)角色public,它存在于每一個(gè)數(shù)據(jù)庫(kù)中,包括系統(tǒng)數(shù)據(jù)庫(kù),如master、msdb、model和用戶數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的所有用戶都屬于public角色,并且不能從public角色中刪除。

  在SQLSERVER數(shù)據(jù)庫(kù)中,guest帳戶是特殊的用戶帳戶。如果用戶使用USE database語(yǔ)句訪問(wèn)的數(shù)據(jù)庫(kù)中沒(méi)有與此用戶關(guān)聯(lián)的帳戶,此用戶就與guest用戶相關(guān)聯(lián)。

  另外SQLSERVER采取登錄名-用戶名的安全規(guī)則,和Oracle里面的schema有點(diǎn)像。SQLSERVER使用所有者進(jìn)行限定(類似于Oracle中的schema),是因?yàn)椴煌挠脩艨赡軇?chuàng)建同名的對(duì)象,例如登錄名me和登錄名you在pubs數(shù)據(jù)庫(kù)中分別創(chuàng)建了用戶名me和you,這二個(gè)用戶都創(chuàng)建了testtable這個(gè)同名表,而這二個(gè)表雖然同名但結(jié)構(gòu)或數(shù)據(jù)可能完全不同,為了避免調(diào)用錯(cuò)誤,必須使用所有者名稱進(jìn)行限定.

  如何來(lái)調(diào)用別的用戶創(chuàng)建的對(duì)象呢?例如me用戶訪問(wèn)you用戶創(chuàng)建的表或訪問(wèn)dbo創(chuàng)建的表. 此種情況,必須同時(shí)滿足二個(gè)條件:

  1.將me用戶的數(shù)據(jù)庫(kù)角色設(shè)置為db_owner,否則無(wú)法訪問(wèn)其他用戶(包括dbo用戶)創(chuàng)建的對(duì)象.(企業(yè)管理器-> 用戶,右鍵菜單 <屬性> 中設(shè)置)  :

  2.使用所有者進(jìn)行限定.

  例如me訪問(wèn)you創(chuàng)建的testtable:

  select   *   from   you.testtable

  另外,dbo用戶作為管理員,系統(tǒng)賦予其所有的權(quán)限,可以調(diào)用任何用戶創(chuàng)建的對(duì)象.

  若某個(gè)數(shù)據(jù)庫(kù)存在2個(gè)或2個(gè)以上的用戶名,如果具有db_owner角色的用戶在訪問(wèn)對(duì)象時(shí)省略了所有者,則系統(tǒng)先查找該用戶的對(duì)象,若找不到則查找dbo用戶是否有同名對(duì)象.例如:

  select   *   from   testtable     或

  select   *   from   pubs..testtable

  實(shí)驗(yàn):

  創(chuàng)建登錄名login_ibrahim

  用此登錄名登錄“查詢分析器”,發(fā)現(xiàn)只能查看系統(tǒng)自帶的數(shù)據(jù)庫(kù),如master、Northwind、pubs等

  將登錄名login_ibrahim的服務(wù)器角色設(shè)置為Database Creator(若不設(shè)置此項(xiàng),則無(wú)法創(chuàng)建數(shù)據(jù)庫(kù))

  在“查詢分析器”中輸入create database test,然后執(zhí)行,這會(huì)創(chuàng)建一個(gè)名為test的數(shù)據(jù)庫(kù)

  查看test數(shù)據(jù)庫(kù)擁有的用戶名,發(fā)現(xiàn)系統(tǒng)會(huì)自動(dòng)創(chuàng)建了dbo和guest這兩個(gè)用戶名。其中dbo用戶名對(duì)應(yīng)的登錄名為login_ibrahim,不能更改test數(shù)據(jù)庫(kù)登錄名login_ibrahim所對(duì)應(yīng)的用戶名dbo,此時(shí)test數(shù)據(jù)庫(kù)的dbo用戶名,其對(duì)應(yīng)的登錄名有兩個(gè),一個(gè)是login_ibrahim,另一個(gè)是sa(沒(méi)想到吧^_^,因?yàn)閟ysadmin 固定服務(wù)器角色的成員會(huì)自動(dòng)映射到 dbo。)

  創(chuàng)建登錄名login_ibrahim2,不設(shè)置任何服務(wù)器角色,將可訪問(wèn)數(shù)據(jù)庫(kù)設(shè)置為test

  打開(kāi)test數(shù)據(jù)庫(kù)的用戶名列表,會(huì)發(fā)現(xiàn)系統(tǒng)會(huì)為登錄名login_ibrahim2自動(dòng)創(chuàng)建一個(gè)同名的用戶名login_ibrahim2,然后再創(chuàng)建一個(gè)名為T_ibrahim的數(shù)據(jù)表

  此時(shí)用login_ibrahim2登錄SQLSERVER,發(fā)現(xiàn)不能在test數(shù)據(jù)庫(kù)中創(chuàng)建表

  用login_ibrahim登錄SQLSERVER,為login_ibrahim2用戶名授予對(duì)test數(shù)據(jù)的db_ddladmin權(quán)限

  此時(shí)用login_ibrahim2登錄SQLSERVER,發(fā)現(xiàn)可以創(chuàng)建數(shù)據(jù)表(創(chuàng)建名為T_ibrahim的數(shù)據(jù)表),并插入數(shù)據(jù)!

文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。