版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章數(shù)據(jù)庫管理與保護(hù)數(shù)據(jù)庫管理系統(tǒng)對(duì)數(shù)據(jù)庫提供一些監(jiān)控和管理功能,以保證整個(gè)系統(tǒng)的正常工作和實(shí)現(xiàn)異常情況下的數(shù)據(jù)保護(hù),防止數(shù)據(jù)意外丟失或產(chǎn)生不一致數(shù)據(jù),限制數(shù)據(jù)的非法訪問和使用等。主要管理和保護(hù)技術(shù)包括:并發(fā)控制數(shù)據(jù)庫恢復(fù)完整性控制安全性控制
這些技術(shù)以事務(wù)為基礎(chǔ)?!纠?.1】修改School的Student表,將所有女生是否住校LiveInDom設(shè)置為1。從用戶的觀點(diǎn)來看,對(duì)數(shù)據(jù)庫的某些操作應(yīng)該是一個(gè)整體,不能分割。5.1使用事務(wù)保持?jǐn)?shù)據(jù)完整性5.1.1事務(wù)概念這條語句影響表中多行數(shù)據(jù),必須保證對(duì)表中所有符合條件的數(shù)據(jù)要么都修改,要么都不修改,否則數(shù)據(jù)庫中的數(shù)據(jù)將處于不一致狀態(tài)。UPDATEStudentSETLiveInDom=1WHERESex=‘女’
【例5.2】完成一個(gè)學(xué)生選課的操作(學(xué)號(hào)為“1103”的學(xué)生選課號(hào)為“106”的課程),該操作包括兩步:將學(xué)號(hào)(StudentCode)、課程號(hào)(CourseCode)添加到Grade表;將Course表中相應(yīng)課程的剩余名額(LeftSeats)減1。學(xué)生選課操作需要兩條SQL語句完成:INSERTINTOGrade(StudentCode,CourseCode)
VALUES('1103','106')UPDATECourseSETLeftSeats=LeftSeats-1
WHERECourseCode='106‘這兩條SQL語句如果其中有一條沒有正確執(zhí)行,那么數(shù)據(jù)庫中的信息就會(huì)不一致。所以必須保證這兩條SQL語句的整體性。為解決例5.1、例5.2類似的問題,數(shù)據(jù)庫管理系統(tǒng)引入了事務(wù)機(jī)制。事務(wù)(Transaction)是一個(gè)包含了一組數(shù)據(jù)庫操作命令的序列,所有的命令作為一個(gè)整體,一起向系統(tǒng)提交或撤銷,操作命令要么都執(zhí)行,要么都不執(zhí)行。因此,事務(wù)是一個(gè)不可分割的邏輯工作單元,是數(shù)據(jù)庫運(yùn)行的最小邏輯工作單位。1.事務(wù)的定義在關(guān)系數(shù)據(jù)庫中,一個(gè)事務(wù)可以是一條SQL語句,也可是一組SQL語句或整個(gè)程序。事務(wù)和程序是兩個(gè)不同的概念。一般來講,事務(wù)使用專門的命令來定義,它蘊(yùn)含在程序當(dāng)中,一個(gè)程序中可包含多個(gè)事務(wù)。2.事務(wù)的特性(ACID特性)
(2)事務(wù)的一致性(Consistency)指事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài),仍然滿足相關(guān)約束規(guī)則,以保持所有數(shù)據(jù)的完整性。(1)事務(wù)的原子性(Atomic)組成一個(gè)事務(wù)的多個(gè)數(shù)據(jù)庫操作是一個(gè)不可分隔的單元,只有所有的操作執(zhí)行成功,整個(gè)事務(wù)才被提交。如任何一個(gè)操作失敗,已經(jīng)執(zhí)行的操作都必須撤銷,讓數(shù)據(jù)庫返回到該事務(wù)執(zhí)行前的初始狀態(tài)。(3)事務(wù)的隔離性(Isolation)指當(dāng)有多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),彼此互不干擾,與它們先后單獨(dú)執(zhí)行時(shí)的結(jié)果一樣。(4)事務(wù)的持久性(Durabiliy)指一個(gè)事務(wù)完成之后,它對(duì)于數(shù)據(jù)庫的所有修改永久性有效,即使出現(xiàn)系統(tǒng)故障造成數(shù)據(jù)錯(cuò)誤或丟失也能恢復(fù)。事務(wù)的ACID原則保證了一個(gè)事務(wù)或者提交后成功執(zhí)行,或者提交后失敗回滾,二者必居其一;事務(wù)對(duì)數(shù)據(jù)的修改具有可恢復(fù)性,即當(dāng)事務(wù)失敗時(shí),它對(duì)數(shù)據(jù)的修改都會(huì)恢復(fù)到該事務(wù)執(zhí)行前的狀態(tài)。如果使用批處理,則有可能有的語句被執(zhí)行,而另外一些語句沒有被執(zhí)行的情況,從而會(huì)造成數(shù)據(jù)的不一致,使用事務(wù)可以避免這種情況的發(fā)生。
5.1.2事務(wù)的應(yīng)用數(shù)據(jù)庫管理系統(tǒng)可按照系統(tǒng)默認(rèn)的規(guī)定自動(dòng)劃分事務(wù)并強(qiáng)制管理,一般一條語句就是一個(gè)事務(wù)。用戶可根據(jù)數(shù)據(jù)處理需要自己定義事務(wù)。例5.2的操作可定義為一個(gè)事務(wù)。例5.1中的UPDATE語句,系統(tǒng)自動(dòng)通過事務(wù)保證該語句正確完成對(duì)所有女生的住校與否字段LiveInDorm的值都設(shè)置為1。在定義事務(wù)時(shí)要注意所定義的數(shù)據(jù)修改順序要與業(yè)務(wù)規(guī)則一致,這樣,通過數(shù)據(jù)庫管理系統(tǒng)強(qiáng)制該事務(wù)執(zhí)行后,就可以保持?jǐn)?shù)據(jù)的一致性。在SQL語言中,事務(wù)的定義用以下命令完成:①開始事務(wù)。標(biāo)識(shí)一個(gè)事務(wù)的開始。BEGINTRANSACTION②提交事務(wù)。如果所有的操作都已完成,向系統(tǒng)提交事務(wù)來結(jié)束事務(wù)。COMMITTRANSACTION③取消事務(wù)。也稱為回滾事務(wù),即結(jié)束當(dāng)前事務(wù),并放棄自事務(wù)開始以來的所有操作。ROLLBACKTRANSACTION事務(wù)提交之后,所有的修改將會(huì)生效,在沒有提交之前,所有的修改都可以通過回滾事務(wù)來撤銷。即只有執(zhí)行到COMMITTRANSACTION命令時(shí),事務(wù)中對(duì)數(shù)據(jù)庫的更新才算確認(rèn)。【例5.3】利用事務(wù)機(jī)制完成例5.2的學(xué)生選課操作。BEGINTRANSACTION/*開始一個(gè)事務(wù)*//*插入選課信息到Grade表中*/INSERTINTOGrade(StudentCode,CourseCode)VALUES('1103','106')/*檢查更新成功否,全局變量@@ERROR返回上一個(gè)SQL語句狀態(tài),非零即出錯(cuò),則回滾之*/IF@@ERROR=0PRINT'學(xué)生選課信息插入成功'ELSEBEGIN PRINT'學(xué)生選課信息插入錯(cuò)誤'
ROLLBACKTRANSACTION--回滾事務(wù)
RETURN
--返回END/*更新Course表剩余名額*/UPDATECourseSETLeftSeats=LeftSeats-1WHERECourseCode='106'IF@@ERROR=0PRINT'選課人數(shù)修改正確'ELSEBEGIN PRINT'選課人數(shù)修改錯(cuò)誤'
ROLLBACKTRANSACTION--回滾事務(wù)
RETURN--返回ENDCOMMITTRANSACTION--提交事務(wù)在查詢編輯窗口編輯該事務(wù)代碼來檢驗(yàn)事務(wù)的執(zhí)行情況:①第一次執(zhí)行正常②第二次執(zhí)行,因?yàn)橄騁rade插入重復(fù)記錄,記錄不能插入,Course表的名額修改也不進(jìn)行。修改代碼,換一個(gè)學(xué)號(hào),并將LeftSeats=LeftSeats-1為LeftSeats=LeftSeats-2,向Grade插入記錄正確,但Course表修改記錄失?。ㄓ捎贑ourse表的觸發(fā)器(例4.65)要求LeftSeats=TotalSeats-選修該課程的人數(shù)),對(duì)Grade的插入操作也被回滾,兩個(gè)表都不發(fā)生變化。5.1.3SQLServer的事務(wù)管理機(jī)制③強(qiáng)制管理:強(qiáng)制保持事務(wù)的原子性和一致性。事務(wù)啟動(dòng)之后,就必須成功完成,否則SQLServer將撤消該事務(wù)啟動(dòng)之后對(duì)數(shù)據(jù)所作的所有修改。SQLServer通過強(qiáng)制事務(wù)管理和事務(wù)處理,保證每個(gè)事務(wù)符合ACID特性。主要管理機(jī)制有:①鎖定機(jī)制:通過加鎖使事務(wù)相互隔離,保持事務(wù)的隔離性,支持多個(gè)事務(wù)并發(fā)執(zhí)行。②記錄機(jī)制:將事務(wù)的執(zhí)行記錄在事務(wù)日志文件中,保證事務(wù)的持久性。當(dāng)系統(tǒng)故障時(shí),可通過回滾事務(wù)恢復(fù)數(shù)據(jù)。5.2使用鎖定機(jī)制實(shí)現(xiàn)并發(fā)訪問控制5.2.1并發(fā)訪問問題在一個(gè)多用戶的數(shù)據(jù)庫系統(tǒng)中,可并行運(yùn)行多個(gè)事務(wù)并同時(shí)訪問數(shù)據(jù)庫,而且可能同時(shí)操作同一張表、甚至同一條記錄、同一數(shù)據(jù)項(xiàng)。一種簡單的方法是讓這些事務(wù)排隊(duì)依次執(zhí)行,這會(huì)使系統(tǒng)效率非常低。如果允許數(shù)據(jù)庫中的相同數(shù)據(jù)同時(shí)被多個(gè)事務(wù)訪問,又沒有采取必要的隔離措施,就會(huì)導(dǎo)致各種并發(fā)問題,破壞數(shù)據(jù)的一致性、完整性,在某些場合對(duì)數(shù)據(jù)的影響甚至是致命的。不加控制的并發(fā)訪問會(huì)出現(xiàn)的問題:①丟失修改:當(dāng)兩個(gè)事務(wù)同時(shí)對(duì)同一數(shù)據(jù)修改時(shí),最后只有一個(gè)生效,另一個(gè)修改丟失。②臟讀:當(dāng)一個(gè)事務(wù)恰好讀取了另一個(gè)事務(wù)在回滾之前修改的數(shù)據(jù),那么這個(gè)數(shù)據(jù)與數(shù)據(jù)庫的實(shí)際數(shù)據(jù)不符合,該數(shù)據(jù)被稱為“臟數(shù)據(jù)”。③不可重讀:一個(gè)事務(wù)讀取某數(shù)據(jù)后,該數(shù)據(jù)被另一事務(wù)更新,當(dāng)該事務(wù)再讀該數(shù)據(jù)進(jìn)行校驗(yàn)時(shí),會(huì)發(fā)現(xiàn)數(shù)據(jù)不一致。如,兩個(gè)學(xué)生將各自的選課記錄增加到選課表,然后恰好同時(shí)對(duì)剩余選課名額進(jìn)行減去1的修改操作,如果只有一人修改有效的話,那么剩余名額將與實(shí)際不符。例如,一個(gè)選課事務(wù)修改了剩余選課名額,但由于異常事務(wù)被回滾取消,而恰在回滾前讀取到剩余名額的另一事務(wù)就獲取了“臟數(shù)據(jù)”。例如,一個(gè)事務(wù)讀取剩余選課名額,然后另一事務(wù)修改了剩余選課名額,當(dāng)該事務(wù)再讀剩余名額進(jìn)行校驗(yàn)時(shí),與剛讀到的數(shù)據(jù)不一致。設(shè)有兩個(gè)事務(wù)T1、T2,其并發(fā)操作如下所示,下列評(píng)價(jià)正確的是________。A)該操作不存在問題 B)該操作丟失修改 C)該操作存在重讀校驗(yàn)不一致D)該操作讀“臟”數(shù)據(jù)解析:本題中事務(wù)T1首先讀取變量A的值(A=10),然后事務(wù)T2也讀取變量A的值(A=10),事務(wù)T1將A的值減5,并提交,此時(shí)A=5;事務(wù)T2將A的值減8,并提交,此時(shí)A=2;T2提交的結(jié)果破壞了T1提交的結(jié)果,導(dǎo)致的T1修改被丟失。
答案:B時(shí)刻T1T2t1讀A=10t2讀A=10t3A=A-5寫回t4A=A-8寫回2.
設(shè)有兩個(gè)事務(wù)T1、T2,其并發(fā)操作如下所示,下列評(píng)價(jià)正確的是________。A)該操作不存在問題 B)該操作丟失修改 C)該操作存在重讀校驗(yàn)不一致D)該操作讀“臟”數(shù)據(jù)解析:本題中事務(wù)T1首先讀取變量A并做修改(A=100,A=A*2),事務(wù)T2讀取變量A(A=200),隨后事務(wù)T1由于某種原因被撤消,執(zhí)行回滾,這時(shí)事務(wù)T1已修改過的變量A的數(shù)據(jù)恢復(fù)為原值100;事務(wù)T2讀到的變量A的數(shù)據(jù)200就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,稱為“臟”數(shù)據(jù)。答案:D時(shí)刻T1T2t1讀A=100,A=A*2寫回t2讀A=200t3ROLLBACK恢復(fù)A=100系統(tǒng)不允許其他用戶對(duì)當(dāng)前鎖定的數(shù)據(jù)資源產(chǎn)生負(fù)面影響的操作。5.2.2并發(fā)訪問控制1.鎖定機(jī)制實(shí)現(xiàn)并發(fā)控制鎖用于表明用戶與資源有某種相關(guān)性,由數(shù)據(jù)庫管理系統(tǒng)在內(nèi)部管理,并基于用戶所執(zhí)行的操作分配和釋放。鎖定管理包括:加鎖、鎖定和解鎖。數(shù)據(jù)庫管理系統(tǒng)通過鎖定機(jī)制避免并發(fā)訪問所帶來的數(shù)據(jù)不一致問題。事務(wù)在訪問某數(shù)據(jù)對(duì)象之前,向系統(tǒng)申請(qǐng)加鎖,被鎖定的數(shù)據(jù)對(duì)象在被其它事務(wù)訪問時(shí)受到限制,待事務(wù)完成后鎖被釋放。為了優(yōu)化系統(tǒng)的并發(fā)性,根據(jù)事務(wù)的大小和系統(tǒng)活動(dòng)的程度,支持多個(gè)鎖定粒度來鎖定不同范圍的數(shù)據(jù)資源。資源描述行鎖定表中的一條記錄頁對(duì)一個(gè)數(shù)據(jù)頁或索引頁鎖定,每頁大小8KB簇對(duì)相鄰的8個(gè)數(shù)據(jù)頁或索引頁構(gòu)成的一組數(shù)據(jù)鎖定表對(duì)包括所有數(shù)據(jù)和索引在內(nèi)的整個(gè)表鎖定數(shù)據(jù)庫對(duì)整個(gè)數(shù)據(jù)庫鎖定2.SQLServer的鎖粒度鎖定在較小的粒度(例如行),事務(wù)的等待時(shí)間減少,增加系統(tǒng)并發(fā)訪問能力,但需要較大的系統(tǒng)開銷,因?yàn)殒i定多行需要控制更多的鎖;鎖定在較大的粒度(例如表),限制了其它事務(wù)的訪問內(nèi)部對(duì)象,使并發(fā)性降低,但需要維護(hù)的鎖較少,系統(tǒng)開銷小。鎖模式描述共享鎖(S)在不更改或不更新數(shù)據(jù)的操作(只讀操作)時(shí)使用,如SELECT語句。有共享鎖存在時(shí),任何其他事務(wù)不能修改數(shù)據(jù),一旦讀數(shù)據(jù)結(jié)束,釋放共享鎖更新鎖(U)用于可更新的資源中。更新鎖在修改數(shù)據(jù)時(shí)可以升級(jí)為獨(dú)占鎖,在沒有修改操作時(shí)降為共享鎖。一次只允許有一個(gè)事務(wù)可獲得資源的更新鎖。獨(dú)占鎖(X)用于數(shù)據(jù)修改操作,如INSERT、UPDATE或DELETE,確保不會(huì)同時(shí)對(duì)同一資源進(jìn)行多重更新意向鎖(IS、IX、SIX)表示SQLServer需要在層次結(jié)構(gòu)中的某些底層資源(如表中的頁或行)上獲取共享鎖或排他鎖。防止其他事務(wù)對(duì)某個(gè)數(shù)據(jù)單元加獨(dú)占鎖結(jié)構(gòu)鎖在執(zhí)行對(duì)表結(jié)構(gòu)操作時(shí)使用,當(dāng)執(zhí)行DDL語言時(shí)(增加列或刪除表),使用結(jié)構(gòu)修改(Sch-M)鎖,其他情況(如編譯查詢)使用結(jié)構(gòu)穩(wěn)定性(Sch-S)鎖。大容量更新鎖(BU)向表中大容量復(fù)制數(shù)據(jù)并指定了TABLOCK提示時(shí)使用3.SQLServer的鎖模式鎖模式用于確定并發(fā)事務(wù)訪問資源的方式不同的鎖模式鎖定強(qiáng)度不同,適用場合不同。SQLServer還控制鎖模式的兼容性。
一般來說,讀(SELECT)操作使用共享鎖(S鎖),寫(UPDATE,INSERT和DELECT)操作使用獨(dú)占鎖(X鎖)。更新鎖(U鎖)是建立在頁級(jí)上的,它在一個(gè)更新操作開始時(shí)獲得,當(dāng)要修改這些頁時(shí),U鎖會(huì)升級(jí)為X鎖。鎖模式之間的兼容情況鎖之間有些兼容,有些不兼容。例如:如果一個(gè)事務(wù)對(duì)某資源具有共享鎖,則另一個(gè)事務(wù)不能獲得獨(dú)占鎖,但可以獲得共享鎖或更新鎖。系統(tǒng)可以檢測(cè)死鎖,即兩個(gè)事務(wù)互相阻塞的情況。如果檢測(cè)到死鎖,SQLServer將終止一個(gè)事務(wù),以使另一個(gè)事務(wù)繼續(xù)。SQLServer會(huì)自動(dòng)對(duì)事務(wù)處理范圍內(nèi)所需要的數(shù)據(jù)資源執(zhí)行鎖定。但用戶也可在應(yīng)用程序中通過SQL語句或數(shù)據(jù)庫訪問API(如)來定義鎖定模式、粒度、持續(xù)時(shí)間等,從而達(dá)到更符合用戶需要的并發(fā)控制功能。4.在SQlServer的查看鎖在SQLServerManagementStudio中,右擊“管理/活動(dòng)監(jiān)視器”,可以有兩種方式來查看當(dāng)前鎖定的進(jìn)程——“按進(jìn)程ID查看鎖”或者“按對(duì)象查看鎖”。包括鎖住對(duì)象、鎖類型、鎖模式、鎖狀態(tài)、所有者等信息。5.3數(shù)據(jù)庫備份和恢復(fù)
備份或還原操作中使用的磁盤或磁帶機(jī)稱為備份設(shè)備。在創(chuàng)建備份時(shí),可以直接將備份文件創(chuàng)建到指定的磁盤文件位置,也可以創(chuàng)建到事先定義的備份設(shè)備上。數(shù)據(jù)庫管理系統(tǒng)通過事務(wù)的原子性和持久性來保證數(shù)據(jù)的可恢復(fù),利用備份和恢復(fù)技術(shù)可以把數(shù)據(jù)庫恢復(fù)到發(fā)生故障前某一時(shí)刻的正確狀態(tài)。5.3.1數(shù)據(jù)庫備份和恢復(fù)概述
備份:用來還原和恢復(fù)數(shù)據(jù)庫的資料副本稱為備份。備份的本質(zhì)是“冗余”,即數(shù)據(jù)的重復(fù)存儲(chǔ)。數(shù)據(jù)庫備份的內(nèi)容包括數(shù)據(jù)庫中的所有對(duì)象。
1.?dāng)?shù)據(jù)庫備份類型
(1)完整數(shù)據(jù)庫備份根據(jù)數(shù)據(jù)庫的容量和數(shù)據(jù)重要性可選擇不同的備份類型,制定備份策略。SQLServer提供了三種不同的備份類型:完整備份、差異備份和事務(wù)日志備份。完整備份是對(duì)所有數(shù)據(jù)庫對(duì)象和事務(wù)日志中的事務(wù)進(jìn)行備份。使用完整備份可重建或恢復(fù)數(shù)據(jù)庫到備份時(shí)刻的數(shù)據(jù)庫狀態(tài)。完整備份因?yàn)槭菍?duì)全庫備份,所以占用存儲(chǔ)空間比較大,備份完成所需時(shí)間較長,如果數(shù)據(jù)庫較大,不宜頻繁使用。與完整備份相比,差異備份較小且速度快,便于進(jìn)行較頻繁的備份。但在還原差異備份之前,必須先還原作為“基準(zhǔn)”備份的完整備份。(2)數(shù)據(jù)庫差異備份差異備份僅記錄自上次完整備份后更改過的數(shù)據(jù)。完整備份是差異備份的“基準(zhǔn)”。(3)事務(wù)日志備份事務(wù)日志備份是對(duì)數(shù)據(jù)庫發(fā)生的事務(wù)進(jìn)行備份,包括從上次進(jìn)行事務(wù)日志備份、數(shù)據(jù)庫完整備份、差異備份之后所有已經(jīng)完成的事務(wù)。在完整備份和差異備份恢復(fù)之后,進(jìn)一步依據(jù)事務(wù)日志備份可以恢復(fù)到該日志備份中的某一時(shí)刻。事務(wù)日志備份占用的資源比較小。選擇備份類型的時(shí)候要注意以下幾點(diǎn):①完整備份和差異備份適用于對(duì)數(shù)據(jù)庫或文件和文件組的備份;事務(wù)日志備份只能備份事務(wù)日志。②完整備份是其他備份類型使用的基礎(chǔ),制定備份策略時(shí)至少包括一次完整備份,再結(jié)合差異備份和事務(wù)日志備份。③備份時(shí)還要考慮數(shù)據(jù)庫恢復(fù)模式,不同的恢復(fù)模式對(duì)備份文件內(nèi)容有影響?!纠客暾麛?shù)據(jù)庫備份與事務(wù)日志備份相結(jié)合的備份策略應(yīng)用。對(duì)School數(shù)據(jù)庫每天清晨0:00做完整備份,每隔4小時(shí)做事務(wù)日志備份。
【例】完整數(shù)據(jù)庫備份及可恢復(fù)性。對(duì)School數(shù)據(jù)庫的完整備份。School數(shù)據(jù)庫每天清晨0:00做完整備份。如果某天上午11:00數(shù)據(jù)庫發(fā)生故障,使用完整數(shù)據(jù)庫備份只能恢復(fù)到當(dāng)天0:00的數(shù)據(jù)庫狀態(tài),當(dāng)天0:00到11:00對(duì)數(shù)據(jù)庫的操作全部丟失。①如果某天上午11:00數(shù)據(jù)庫發(fā)生故障,使用完整數(shù)據(jù)庫備份可恢復(fù)到當(dāng)天0:00的數(shù)據(jù)庫狀態(tài),再使用日志可以恢復(fù)到上午8:00的數(shù)據(jù)庫狀態(tài)。②如果在數(shù)據(jù)庫發(fā)生故障時(shí),數(shù)據(jù)庫管理系統(tǒng)可以工作,那么可以立即備份數(shù)據(jù)庫日志,使用這個(gè)日志就可以將數(shù)據(jù)庫恢復(fù)到故障點(diǎn)。2.?dāng)?shù)據(jù)庫恢復(fù)模式(2)完整恢復(fù)
(1)簡單恢復(fù)
SQLServer三種恢復(fù)模式:(3)大容量日志恢復(fù)數(shù)據(jù)庫恢復(fù)是與備份相對(duì)應(yīng)的操作,一旦數(shù)據(jù)庫出現(xiàn)問題,就可以使用其備份文件將受損數(shù)據(jù)庫恢復(fù)到破壞前某時(shí)刻的狀態(tài),使數(shù)據(jù)的損失減到最小。另外還可以使用恢復(fù)技術(shù)在另一個(gè)服務(wù)器上重建數(shù)據(jù)庫,實(shí)現(xiàn)數(shù)據(jù)庫的復(fù)制或移動(dòng)。依據(jù)完整備份和差異備份恢復(fù)數(shù)據(jù)庫到最后一次備份的執(zhí)行時(shí)刻。該策略操作簡單,但備份操作點(diǎn)之后的數(shù)據(jù)丟失,需要重建,適用于規(guī)模較小或數(shù)據(jù)不經(jīng)常改變的數(shù)據(jù)庫。(1)簡單恢復(fù)
備份時(shí)選“簡單恢復(fù)”策略,備份將只簡略地記錄大多數(shù)事務(wù),所記錄的信息只是為了確保在系統(tǒng)崩潰或還原數(shù)據(jù)備份時(shí)使用。依據(jù)完整備份、差異備份和事務(wù)日志備份將數(shù)據(jù)庫恢復(fù)到任意的時(shí)刻點(diǎn),包括故障時(shí)間點(diǎn)(假定在故障發(fā)生之后備份了日志尾部)。該恢復(fù)操作復(fù)雜,并且需要大量磁盤空間,對(duì)操作頻繁且數(shù)據(jù)恢復(fù)非常重要的數(shù)據(jù)庫才使用該策略。(2)完整恢復(fù)
備份時(shí)選“完整恢復(fù)”策略,將完整地記錄所有的事務(wù),并保留所有的事務(wù)日志記錄,供還原數(shù)據(jù)庫時(shí)使用。(3)大容量日志恢復(fù)依據(jù)完整備份、差異備份和事務(wù)日志備份恢復(fù)數(shù)據(jù)庫。該模式允許使用較小日志空間對(duì)大容量復(fù)制操作的恢復(fù)。
備份時(shí)選“大容量日志恢復(fù)”策略,將簡略地記錄大多數(shù)大容量操作(例如,索引創(chuàng)建和大容量加載),完整地記錄其他事務(wù),節(jié)省日志空間,但沒有“完整恢復(fù)”安全。5.3.2SQLServer數(shù)據(jù)庫備份和恢復(fù)方法【例5.4】將School數(shù)據(jù)庫完整備份到磁盤文件C:\Bak\SchoolDB.bak。1.使用ManagementStudio備份數(shù)據(jù)庫①
右擊“School數(shù)據(jù)庫”,選擇“任務(wù)/備份”菜單。②在“備份數(shù)據(jù)庫”窗口有“常規(guī)”和“選項(xiàng)”兩個(gè)選項(xiàng)頁。在“常規(guī)”頁的上部,可以選擇備份數(shù)據(jù)庫“School”、恢復(fù)模式“SIMPLE”、備份類型“完整”、備份組件“數(shù)據(jù)庫”。中間可以設(shè)置備份集的名稱、說明以及備份集過期時(shí)間。③在“常規(guī)”頁的下部可以設(shè)置備份的目標(biāo),默認(rèn)值為“磁盤”上SQLServer安裝目錄下的Backup文件夾,文件名為“數(shù)據(jù)庫名.bak”;如果不使用該文件,可先刪除,然后單擊“添加”按鈕,打開“選擇備份目標(biāo)”對(duì)話框,可選中“文件名”單選按鈕來指定文件名和路徑,本例為“C:\Bak\SchoolDB.bak”。④“選項(xiàng)”頁上部是“覆蓋媒體”,選擇“覆蓋所有現(xiàn)有媒體集”會(huì)覆蓋原有文件,如果選擇“追加到現(xiàn)有備份集”則在原有備份文件基礎(chǔ)上增加新的備份副本。⑤單擊“確定”按鈕執(zhí)行備份,左下角的進(jìn)度窗格顯示備份正在執(zhí)行的動(dòng)態(tài)環(huán),完成后會(huì)彈出完成對(duì)話框。在磁盤上可以找到文件“C:\Bak\SchoolDB.bak”。2.使用ManagementStudio還原數(shù)據(jù)庫【例5.5】使用School數(shù)據(jù)庫完整備份恢復(fù)數(shù)據(jù)庫。①在對(duì)象資源管理器中,右擊“數(shù)據(jù)庫”,選擇“還原數(shù)據(jù)庫”菜單,打開“還原數(shù)據(jù)庫”對(duì)話框。②在“常規(guī)”頁,“還原的目標(biāo)”目標(biāo)數(shù)據(jù)庫處選擇“School”,目標(biāo)的時(shí)間點(diǎn)“最近狀態(tài)”;在“還原的源”選項(xiàng)區(qū)中,選擇源數(shù)據(jù)庫“School”。如果該數(shù)據(jù)庫已經(jīng)執(zhí)行了備份,那么在下部表格就會(huì)顯示備份歷史,從中選擇用于還原的備份集。③在“選項(xiàng)”頁,進(jìn)行其他設(shè)置。④按“確定”按鈕執(zhí)行還原操作,還原操作成功完成后會(huì)彈出提示對(duì)話框??梢允褂脗浞菸募?shù)據(jù)庫還原到原數(shù)據(jù)庫上,也可以還原為一個(gè)新的數(shù)據(jù)庫;可以還原到本服務(wù)器上,也可以還原到其他服務(wù)器上?!纠?.6】用School數(shù)據(jù)庫的完整備份文件新建數(shù)據(jù)庫Education,數(shù)據(jù)庫文件存放D:\。①在對(duì)象資源管理器中,右擊“數(shù)據(jù)庫”,選擇“還原數(shù)據(jù)庫”菜單,打開“還原數(shù)據(jù)庫”對(duì)話框。②在“常規(guī)”頁,“還原的目標(biāo)”的目標(biāo)數(shù)據(jù)庫處輸入“Education”;在還原的源選項(xiàng)區(qū)中,選擇源設(shè)備,點(diǎn)擊“…”按鈕,彈出指定備份對(duì)話框,添加備份文件“C:\Bak\SchoolDB.bak”。返回“還原數(shù)據(jù)庫”對(duì)話框,選中用于還原的備份集。③在“選項(xiàng)”頁,在“將數(shù)據(jù)庫文件還原為”處重新設(shè)置還原為的目標(biāo)地址和文件名,本例數(shù)據(jù)庫文件和日志文件分別設(shè)置為“D:\Education.mdf”“D:\Education_log.ldf”。按“確定”后即建立數(shù)據(jù)庫Education。1.正在使用的數(shù)據(jù)庫不能被還原。提示:2.當(dāng)異地還原數(shù)據(jù)庫時(shí),必須在“選項(xiàng)”頁重新設(shè)置“還原為”的文件位置和文件名,因?yàn)槟J(rèn)的還原路徑和文件可能不存在,無法實(shí)現(xiàn)還原。3.?dāng)?shù)據(jù)導(dǎo)入和導(dǎo)出通過導(dǎo)入和導(dǎo)出操作可以在SQLServer數(shù)據(jù)庫和其他數(shù)據(jù)源(例如另一個(gè)SQLServer數(shù)據(jù)庫、Oracle數(shù)據(jù)庫或Excel文件等)之間轉(zhuǎn)移數(shù)據(jù)。“導(dǎo)出”是將數(shù)據(jù)從當(dāng)前SQLServer數(shù)據(jù)庫復(fù)制到其他數(shù)據(jù)源。“導(dǎo)入”是將其他數(shù)據(jù)源的數(shù)據(jù)加載到當(dāng)前SQLServer數(shù)據(jù)庫?!纠?.7】將數(shù)據(jù)庫School中班級(jí)表Class和課程表Course的數(shù)據(jù)導(dǎo)出到Excel文件E:\Class.xls。①在“對(duì)象資源管理器”中右擊數(shù)據(jù)庫“School”,選擇“任務(wù)/導(dǎo)出數(shù)據(jù)”菜單,進(jìn)入“SQLServer導(dǎo)入和導(dǎo)出向?qū)А笔醉摚S向?qū)б徊揭徊酵瓿蓴?shù)據(jù)導(dǎo)出。②分別在數(shù)據(jù)源窗口和目的窗口完成設(shè)置。選擇數(shù)據(jù)源為SQLNativeClient,服務(wù)器為本機(jī)名稱或“.”,數(shù)據(jù)庫為“School”。選擇目標(biāo)文件為“MicrosoftExcel”,文件名為“E:\Class.xls”。③在指定表復(fù)制或查詢窗口選擇“復(fù)制一個(gè)或多個(gè)表或視圖的數(shù)據(jù)”。在選擇源表和源視圖窗口中,選中要導(dǎo)出的數(shù)據(jù)表Class和Course。點(diǎn)擊“預(yù)覽”按鈕可查看將導(dǎo)出的數(shù)據(jù)。④選擇立即執(zhí)行或保存SSIS包以后執(zhí)行。
④選擇立即執(zhí)行或保存SSIS包以后執(zhí)行。按“完成”按鈕開始執(zhí)行導(dǎo)出,會(huì)顯示導(dǎo)出進(jìn)度和導(dǎo)出對(duì)象,成功完成后顯示提示信息??梢栽诖疟P文件查看“E:\Class.xls”,它包括兩個(gè)工作表,即Class和Course。
說明:數(shù)據(jù)導(dǎo)入過程和導(dǎo)出過程使用同一個(gè)向?qū)?,操作過程相似。數(shù)據(jù)導(dǎo)入/導(dǎo)出對(duì)象可以是表或視圖,一次可導(dǎo)入或?qū)С龆鄠€(gè)對(duì)象。注意數(shù)據(jù)源和目標(biāo)的格式要兼容,例如Student表在導(dǎo)出到Excel文件時(shí),不能包含定義為image類型的Photo字段。提示:如果導(dǎo)出有問題,可先在Excel中創(chuàng)建一個(gè)空文件D:\Class.xls后將該文件關(guān)閉。然后再到SQLServer中進(jìn)行數(shù)據(jù)表的導(dǎo)出。SQLServer提供了以數(shù)據(jù)庫文件復(fù)制和加載數(shù)據(jù)庫的方法,可作為數(shù)據(jù)庫轉(zhuǎn)移或數(shù)據(jù)備份功能來使用,但在復(fù)制數(shù)據(jù)庫前數(shù)據(jù)庫必須脫離SQLServer?!纠?.8】將School數(shù)據(jù)庫分離,然后將數(shù)據(jù)庫文件和日志文件復(fù)制到C:\Bak,再附加該數(shù)據(jù)庫。①分離數(shù)據(jù)庫。右擊“數(shù)據(jù)庫/School”,選擇“任務(wù)/分離”菜單。在“分離數(shù)據(jù)庫”對(duì)話框中,當(dāng)狀態(tài)顯示“就緒”時(shí),單擊“確定”按鈕,即完成分離。已分離的數(shù)據(jù)庫School從“對(duì)象資源管理器”中被刪除。4.附加和分離數(shù)據(jù)庫②
復(fù)制數(shù)據(jù)庫文件。利用Windows操作系統(tǒng)中的文件復(fù)制功能將數(shù)據(jù)庫文件和事務(wù)日志文件(“School_Data.MDF”和“School_log.LDF”)拷貝到“C:\Bak”。③附加數(shù)據(jù)庫。右擊“數(shù)據(jù)庫”,選擇“附加”菜單。在“附加數(shù)據(jù)庫”對(duì)話框中,單擊“添加”按鈕。在“定位數(shù)據(jù)庫文件”對(duì)話框中選擇要附加的數(shù)據(jù)庫文件名“C:\Bak\School_Data.MDF”?!癝chool數(shù)據(jù)庫詳細(xì)信息”列出了數(shù)據(jù)庫中的所有文件(數(shù)據(jù)文件和日志文件)的詳細(xì)信息。在“附加為”框內(nèi),默認(rèn)為“School”,也可輸入新的數(shù)據(jù)庫名,但要注意數(shù)據(jù)庫名不能與SQLServer下任何現(xiàn)有數(shù)據(jù)庫重名。④單擊“確定”按鈕完成附加。新附加的數(shù)據(jù)庫School即出現(xiàn)在“數(shù)據(jù)庫”文件夾中。提示:在分離數(shù)據(jù)庫之前需關(guān)閉所有與數(shù)據(jù)庫連接的應(yīng)用程序、操作窗口,如果存在“活動(dòng)連接”,則處于“未就緒”狀態(tài),不能分離。分離數(shù)據(jù)庫只是數(shù)據(jù)庫脫離SQLServer管理,并不是將數(shù)據(jù)庫從磁盤上刪除。5.?dāng)?shù)據(jù)庫維護(hù)計(jì)劃【例5.9】建立一個(gè)數(shù)據(jù)庫維護(hù)計(jì)劃“MaintenancePlan_School”,將School數(shù)據(jù)庫在每天0:00完整備份到磁盤目錄“C:\Bak”下,并且檢查數(shù)據(jù)庫完整性。①展開“數(shù)據(jù)庫/管理/維護(hù)計(jì)劃”,右擊“維護(hù)計(jì)劃”選擇“新建維護(hù)計(jì)劃”菜單。在彈出的維護(hù)計(jì)劃名稱對(duì)話框輸入“MaintenancePlan_School”,按“確定”按鈕后打開維護(hù)計(jì)劃設(shè)計(jì)窗口,同時(shí)出現(xiàn)維護(hù)任務(wù)“工具箱”。數(shù)據(jù)庫管理員可以建立數(shù)據(jù)庫維護(hù)計(jì)劃,讓系統(tǒng)定時(shí)自動(dòng)維護(hù)數(shù)據(jù)庫,包括數(shù)據(jù)庫備份、重新組織索引、執(zhí)行SQL語句等。③在設(shè)計(jì)窗口雙擊“備份數(shù)據(jù)庫”任務(wù)。在數(shù)據(jù)庫列表中選擇“School”后將顯示“特定數(shù)據(jù)庫”;備份類型選“完整”;目標(biāo)“磁盤”;選中“為每個(gè)數(shù)據(jù)庫創(chuàng)建備份文件,設(shè)置文件夾為“C:\Bak”;按“確定”后完成任務(wù)設(shè)置。②從工具箱拖動(dòng)子計(jì)劃任務(wù)到設(shè)計(jì)窗口,這里拖放“備份數(shù)據(jù)庫”任務(wù)、“檢查數(shù)據(jù)庫完整性”任務(wù)。④在設(shè)計(jì)窗口雙擊“檢查數(shù)據(jù)庫完整性”任務(wù),彈出“數(shù)據(jù)庫完整性檢查”對(duì)話框。在數(shù)據(jù)庫列表中選擇“School”后將顯示“特定數(shù)據(jù)庫”;按“確定”后完成任務(wù)設(shè)置。
⑤在設(shè)計(jì)窗口,點(diǎn)擊“日志記錄”設(shè)置作業(yè)執(zhí)行報(bào)告方式,本例設(shè)置文件位置為“C:\Bak”,按“確定”完成設(shè)置;點(diǎn)擊“計(jì)劃”后的“...”按鈕,設(shè)置作業(yè)計(jì)劃調(diào)度方式。本例設(shè)置:頻率為“每天0:00:00執(zhí)行一次”,開始日期為“2011/9/1”,按“確定”完成設(shè)置。⑥在設(shè)計(jì)窗口的說明處寫“School備份,檢驗(yàn)完整性”,點(diǎn)擊“保存”菜單或“關(guān)閉設(shè)計(jì)窗口”完成設(shè)計(jì)并保存該維護(hù)計(jì)劃。在對(duì)象資源管理器可以查看到。數(shù)據(jù)庫維護(hù)計(jì)劃每次執(zhí)行會(huì)根據(jù)當(dāng)時(shí)時(shí)間生成一個(gè)新的自動(dòng)命名的備份文件,并生成維護(hù)計(jì)劃執(zhí)行報(bào)告文件。使用數(shù)據(jù)庫維護(hù)計(jì)劃時(shí)要注意:
①因?yàn)樽鳂I(yè)的執(zhí)行通過SQLServer代理來調(diào)度,SQLServerAgent必須啟動(dòng)正常運(yùn)行,數(shù)據(jù)庫維護(hù)計(jì)劃才能正常執(zhí)行。所以要經(jīng)常檢查該服務(wù)是否正常運(yùn)行以及各項(xiàng)備份文件是否按時(shí)生成。如果發(fā)現(xiàn)代理未啟動(dòng),可以在SQLServerConfiguration中選擇服務(wù)SQLServerAgent并啟動(dòng)。②數(shù)據(jù)庫系統(tǒng)根據(jù)維護(hù)計(jì)劃為數(shù)據(jù)庫備份文件和報(bào)告文件自動(dòng)命名,保證每次作業(yè)生成獨(dú)立的備份文件。主要文件命名格式如下所示。文
件文件命名格式(時(shí)間戳格式為YYYYMMDDHHMM)命名舉例數(shù)據(jù)庫備份文件數(shù)據(jù)庫名_backup_時(shí)間戳.BakSchool_backup_201211280000.Bak作業(yè)調(diào)度報(bào)告文件數(shù)據(jù)庫維護(hù)計(jì)劃名_時(shí)間戳.txtMaintenancePlan_School_201211280000.txt5.4數(shù)據(jù)庫安全性控制數(shù)據(jù)庫安全性控制指保護(hù)數(shù)據(jù)庫,防止因用戶非法使用數(shù)據(jù)庫造成數(shù)據(jù)泄露、更改或破壞。SQLServer數(shù)據(jù)庫安全控制技術(shù)主要是用戶訪問控制,另外視圖、審計(jì)和加密等技術(shù)的應(yīng)用也可以提高數(shù)據(jù)安全性。本節(jié)主要介紹用戶訪問控制技術(shù)。5.4數(shù)據(jù)庫安全性控制1.SQLServer的用戶訪問控制SQLServer提供了對(duì)數(shù)據(jù)庫及所包含數(shù)據(jù)對(duì)象的用戶訪問控制,在三個(gè)層次上進(jìn)行安全管理。①用戶身份驗(yàn)證。首先,用戶必須通過身份驗(yàn)證來登錄SQL
Server。②數(shù)據(jù)庫的訪問權(quán)限控制。用戶對(duì)SQL
Server上特定數(shù)據(jù)庫必須有權(quán)限才能訪問。③數(shù)據(jù)庫中對(duì)象的訪問權(quán)限控制。用戶對(duì)數(shù)據(jù)庫中的特定對(duì)象必須有權(quán)限才能訪問,進(jìn)行符合權(quán)限的數(shù)據(jù)存取操作。2.SQLServer的身份驗(yàn)證(1)SQLServer的身份驗(yàn)證模式SQLServer提供了兩種安全驗(yàn)證模式,即Windows身份驗(yàn)證模式和SQLServer身份驗(yàn)證模式。①Windows身份驗(yàn)證模式(集成身份驗(yàn)證模式):允許一個(gè)已登錄Windows的用戶不必再提供一個(gè)單獨(dú)的登錄賬號(hào)就能登錄到該系統(tǒng)中的一個(gè)SQLServer服務(wù)器,從而實(shí)現(xiàn)SQLServer服務(wù)器與Windows登錄的安全集成。②SQLServer身份驗(yàn)證模式
:要求用戶必須輸入一個(gè)SQLServer用戶名及口令。這個(gè)用戶名是獨(dú)立于操作系統(tǒng)、在SQLServer中建立的,從而可以在一定程度上避免操作系統(tǒng)層上對(duì)數(shù)據(jù)庫的非法訪問。②在“安全性”頁?!胺?wù)器身份驗(yàn)證”區(qū)域有兩個(gè)選項(xiàng),“Windows身份驗(yàn)證模式(W)”和“SQLServer和Windows身份驗(yàn)證模式(S)”,選中某一個(gè)按“確定”按鈕設(shè)置完成。(2)設(shè)置身份驗(yàn)證模式①在“對(duì)象資源管理器”中右擊需要設(shè)置的SQLServer服務(wù)器,選擇“屬性”菜單,彈出“服務(wù)器屬性”對(duì)話框。提示:①如果選擇前者,只能采用Windows身份驗(yàn)證;選擇后者為混合身份驗(yàn)證模式,可以在登錄時(shí)再選擇是使用“Windows身份驗(yàn)證模式”還是“SQLServer身份驗(yàn)證模式”。②轉(zhuǎn)換模式需重新啟動(dòng)SQLServer服務(wù)(使用SQLServerConfigurationManager啟動(dòng))。(3)登錄賬號(hào)管理在SQLServer中,系統(tǒng)已經(jīng)自動(dòng)建立了一些內(nèi)置賬號(hào)。登錄賬號(hào)的信息是系統(tǒng)信息,存儲(chǔ)在master數(shù)據(jù)庫中。展開“對(duì)象資源管理器”中的“安全性”選項(xiàng),可以看到內(nèi)置賬號(hào)信息:①sa被稱為系統(tǒng)管理員(SystemAdministrator),擁有SQLServer全部權(quán)限,可以執(zhí)行所有的操作。②Builtin/Administrators是為Windows操作系統(tǒng)系統(tǒng)管理員提供的默認(rèn)賬號(hào),擁有SQLServer全部權(quán)限,可執(zhí)行所有操作實(shí)際的使用過程中,管理員需要添加一些登錄賬號(hào)以賦予用戶以有限的訪問權(quán)限。用戶可以將Windows賬號(hào)添加到SQLServer中,也可以新建SQLServer賬號(hào)?!纠?.10】創(chuàng)建一個(gè)名稱為“Wanghong”的SQLServer用戶帳號(hào),其密碼為“123”,默認(rèn)訪問的數(shù)據(jù)庫為School。
在“對(duì)象資源管理器”中,右擊“安全性/登錄名”,選擇“新建登錄名”菜單。在“登錄名”對(duì)話框中,選擇“SQLServer身份驗(yàn)證”單選鈕,設(shè)置登錄名“Wanghong”,密碼為“123”;設(shè)置默認(rèn)數(shù)據(jù)庫“School。也可以通過“新建登錄”中“服務(wù)器角色”和“用戶映射”選項(xiàng)頁設(shè)定該登錄名的服務(wù)器角色和可訪問的數(shù)據(jù)庫,這樣該登錄賬號(hào)同時(shí)也作為該數(shù)據(jù)庫的合法用戶。
說明:如果用戶想使用“Wanghong”登錄SQLServer,必須先設(shè)置SQLServer的身份驗(yàn)證方式為“SQLServer和Windows身份驗(yàn)證模式”。設(shè)置成功后,當(dāng)用戶連接數(shù)據(jù)庫時(shí),選擇“SQLServer身份驗(yàn)證”,可用賬號(hào)“WangHong”登錄SQLServer。登錄后,由于“Wanghong”可以訪問的默認(rèn)數(shù)據(jù)庫為School,但對(duì)系統(tǒng)其他數(shù)據(jù)庫無訪問權(quán)限,甚至無法展開查看,例如訪問SchoolTest,會(huì)報(bào)錯(cuò)。刪除數(shù)據(jù)庫賬戶使用ManagementStudio也可以刪除數(shù)據(jù)庫帳戶。步驟為:展開“服務(wù)器/安全性/登錄名”,右擊要?jiǎng)h除的登錄名,選擇“刪除”菜單即可。5.4.2數(shù)據(jù)庫級(jí)管理1.?dāng)?shù)據(jù)庫用戶及其權(quán)限管理(1)數(shù)據(jù)庫用戶SQLServer用戶帳號(hào)建好后,需要映射為數(shù)據(jù)庫用戶,才能訪問數(shù)據(jù)庫。在建立用戶帳號(hào)時(shí),選擇默認(rèn)訪問的數(shù)據(jù)庫可以將賬號(hào)映射為數(shù)據(jù)庫用戶。說明:例5.10建立的登錄帳號(hào)“Wanghong”即成為School數(shù)據(jù)庫的用戶。也可以將“Wanghong”映射為其他數(shù)據(jù)庫的用戶。數(shù)據(jù)庫的用戶可以重新命名,但一般與SQLServer登錄帳號(hào)采用同名?!纠?.11】將SQLServer用戶帳號(hào)“Wanghong”映射為數(shù)據(jù)庫SchoolTest的用戶。在ManagementStudio中,選擇要操作的數(shù)據(jù)庫,展開“安全性/用戶”,右擊要?jiǎng)h除的數(shù)據(jù)庫用戶,選擇“刪除”菜單即可。
創(chuàng)建用戶:在“對(duì)象資源管理器”中,右擊“數(shù)據(jù)庫/SchoolTest/安全性/用戶”,選擇“新建用戶”菜單。在“新建用戶”對(duì)話框中,用戶名填寫“Wanghong”,登錄名選擇“Wanghong”,按“確定”后關(guān)閉窗口,即可在SchoolTest數(shù)據(jù)庫用戶列表中出現(xiàn)。刪除用戶:數(shù)據(jù)庫用戶登錄SQLServer具有訪問該數(shù)據(jù)庫的權(quán)限,但要訪問具體的數(shù)據(jù)庫對(duì)象,仍需要被賦予權(quán)限。(2)數(shù)據(jù)庫用戶權(quán)限管理數(shù)據(jù)對(duì)象操作權(quán)限表、視圖SELECT,INSERT,UPDATE,DELETE,ALLPRIVILEGE列SELECT,UPDATE,Refrences存儲(chǔ)過程和函數(shù)EXECUTE,EXECUTE,ViewDefinition,Alter,Control,TakeOwnership,SQLServer中可訪問的主要數(shù)據(jù)對(duì)象與操作權(quán)限【例5.12】為School數(shù)據(jù)庫的用戶“Wanghong”設(shè)置權(quán)限:對(duì)Student表具有Select、Insert權(quán)限,禁止執(zhí)行Delete操作,僅對(duì)“Telephone’列具有Update權(quán)限。①授予權(quán)限:表示授予該項(xiàng)操作權(quán)限,但可被用戶所屬的其他角色的拒絕權(quán)限覆蓋。②具有授予權(quán)限:使具有授予權(quán)限。點(diǎn)擊后解除“拒絕權(quán)限”,并設(shè)置“授予權(quán)限”。③拒絕權(quán)限:表示禁止該項(xiàng)操作權(quán)限,并覆蓋用戶從所屬的其他角色獲得的權(quán)限。④未設(shè)置:表示不能執(zhí)行該項(xiàng)操作,但可被用戶所屬的其他角色的權(quán)限覆蓋。SQLServer權(quán)限管理包括以下操作:首先使用“Windows身份驗(yàn)證”或“SQLServer身份驗(yàn)證”的sa用戶登錄。在“對(duì)象資源管理器”中,選中要設(shè)置權(quán)限的數(shù)據(jù)庫對(duì)象(例如表、視圖等),選擇“屬性”窗口在權(quán)限頁中添加用戶“Wanghong”,并設(shè)置權(quán)限。①右擊“數(shù)據(jù)庫/School/安全性/用戶/Wanghong”,選擇“屬性”菜單,出現(xiàn)“數(shù)據(jù)庫用戶”窗口,選擇“安全對(duì)象”選擇頁。②點(diǎn)擊“添加”按鈕,彈出“添加對(duì)象”對(duì)話框,選擇“特定類型的所有對(duì)象”;在“選擇對(duì)象類型”對(duì)話框中選擇“表”。③返回“數(shù)據(jù)庫用戶”窗口,在“安全對(duì)象”列表中選中“Student”,在“顯式權(quán)限”列表中選中“Select”、“Insert”行,在“授予”處點(diǎn)擊出現(xiàn)“√”表示授予該操作權(quán)限;選中“Delete”行,在“拒絕”處點(diǎn)擊出現(xiàn)“√”表示禁止該操作;選中“Update”行,點(diǎn)擊“列權(quán)限”按鈕,出現(xiàn)列權(quán)限窗口,選中“Telephone”行,在“授予”處點(diǎn)擊出現(xiàn)“√”表示授予該操作權(quán)限。
④點(diǎn)“有效權(quán)限”按鈕,可查看“Wanghong”對(duì)“Student”表的所有操作權(quán)限。(3)特殊數(shù)據(jù)庫用戶SQLServer為每個(gè)新創(chuàng)建的數(shù)據(jù)庫預(yù)定義了幾個(gè)特殊數(shù)據(jù)庫用戶。①
dbo。dbo是數(shù)據(jù)庫所有者(DataBaseOwner),是數(shù)據(jù)庫最高權(quán)力所有者,創(chuàng)建數(shù)據(jù)庫的用戶即為數(shù)據(jù)庫所有者。具有所有數(shù)據(jù)庫操作權(quán)限,并可向其他用戶授予權(quán)限。dbo不能被刪除。②Guest。允許具有SQLServer登錄帳戶但在數(shù)據(jù)庫中沒有數(shù)據(jù)庫用戶的使用者用Guest的用戶身份和權(quán)限訪問數(shù)據(jù)庫。Guest可以刪除。例如:用“Windows身份驗(yàn)證”或SQLServer的“sa”賬號(hào)登錄后都自動(dòng)映射為dbo,對(duì)所有數(shù)據(jù)庫及其包含的對(duì)象具有全部操作權(quán)限。2.?dāng)?shù)據(jù)庫角色及其權(quán)限管理按賦予操作權(quán)限的不同建立角色,然后將用戶作為角色成員,通過對(duì)角色的權(quán)限管理,自動(dòng)實(shí)現(xiàn)對(duì)其所有用戶成員的權(quán)限管理。
SQLServer可利用角色來批量管理用戶的權(quán)限,簡化安全管理。一個(gè)用戶的訪問權(quán)限集合是其所屬每個(gè)角色的權(quán)限和其自身權(quán)限的累加。SQLServer預(yù)定義了5個(gè)角色。
①public角色。每個(gè)數(shù)據(jù)庫(包括系統(tǒng)數(shù)據(jù)庫)中都存在。public角色提供數(shù)據(jù)庫中用戶的默認(rèn)權(quán)限,不能刪除。每個(gè)數(shù)據(jù)庫用戶都自動(dòng)是此角色的成員,因此,無法在此角色中添加或刪除用戶。②固定服務(wù)器角色。固定服務(wù)器角色可以在服務(wù)器上進(jìn)行相應(yīng)的管理操作,完全獨(dú)立于某個(gè)具體的數(shù)據(jù)庫。系統(tǒng)提供了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新科版選修化學(xué)下冊(cè)月考試卷含答案
- 2025年冀教新版九年級(jí)地理下冊(cè)月考試卷含答案
- 2025年粵教滬科版選修4地理上冊(cè)月考試卷含答案
- 2025年度銀行網(wǎng)點(diǎn)門禁安全系統(tǒng)安裝與維護(hù)服務(wù)合同4篇
- 2025年滬科版選擇性必修1歷史下冊(cè)月考試卷含答案
- 2025年外研版七年級(jí)生物上冊(cè)階段測(cè)試試卷
- 2025年度嬰幼兒奶粉消費(fèi)者滿意度調(diào)查與分析合同4篇
- 二零二五年度農(nóng)業(yè)土地租賃合同農(nóng)業(yè)可持續(xù)發(fā)展戰(zhàn)略4篇
- 二零二五版馬戲團(tuán)演出服裝與化妝服務(wù)合同3篇
- 二零二五年度出國定居寵物安置與照料合同2篇
- 小學(xué)網(wǎng)管的工作總結(jié)
- 2024年銀行考試-興業(yè)銀行筆試參考題庫含答案
- 泵站運(yùn)行管理現(xiàn)狀改善措施
- 2024屆武漢市部分學(xué)校中考一模數(shù)學(xué)試題含解析
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術(shù)標(biāo)準(zhǔn)》
- 第19章 一次函數(shù) 單元整體教學(xué)設(shè)計(jì) 【 學(xué)情分析指導(dǎo) 】 人教版八年級(jí)數(shù)學(xué)下冊(cè)
- 浙教版七年級(jí)下冊(cè)科學(xué)全冊(cè)課件
- 弧度制及弧度制與角度制的換算
- 瓦楞紙箱計(jì)算公式測(cè)量方法
- DB32-T 4004-2021水質(zhì) 17種全氟化合物的測(cè)定 高效液相色譜串聯(lián)質(zhì)譜法-(高清現(xiàn)行)
- DB15T 2724-2022 羊糞污收集處理技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論