【正文】
習(xí)題771 名詞解釋數(shù)據(jù)庫(kù)安全性 用戶標(biāo)識(shí) 存取控制機(jī)制 數(shù)據(jù)庫(kù)角色事務(wù) 并發(fā)操作 封鎖 X鎖PX協(xié)議 PXC協(xié)議 S鎖 PS協(xié)議PSC協(xié)議 活鎖 餓死 死鎖串行調(diào)度 并發(fā)調(diào)度 可串行化調(diào)度 兩段封鎖協(xié)議約束 規(guī)則 更新鎖(U鎖) 完整數(shù)據(jù)庫(kù)備份差異數(shù)據(jù)庫(kù)備份 事務(wù)日志備份 文件組備份答:數(shù)據(jù)庫(kù)安全性:數(shù)據(jù)庫(kù)的安全性就是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的保護(hù)措施,一般包括的登陸的身份驗(yàn)證管理、數(shù)據(jù)庫(kù)的使用權(quán)限管理和數(shù)據(jù)庫(kù)中對(duì)象的使用權(quán)限管理三種安全性保護(hù)措施。用戶標(biāo)識(shí):用戶標(biāo)識(shí)是系統(tǒng)提供的最外層安全保護(hù)措施。其方法是由系統(tǒng)提供一定的方式讓用戶標(biāo)識(shí)自己的名字或身份。每次用戶要求進(jìn)入系統(tǒng)時(shí),由系統(tǒng)進(jìn)行核對(duì),通過(guò)鑒定后才提供機(jī)器使用權(quán)。 存取控制機(jī)制:存取控制機(jī)制主要包括兩部分:定義用戶權(quán)限,并將用戶權(quán)限登記到數(shù)據(jù)字典中;合法權(quán)限檢查,每當(dāng)用戶發(fā)出存取數(shù)據(jù)庫(kù)的操作請(qǐng)求后(請(qǐng)求一般應(yīng)包括操作類型、操作對(duì)象和操作用戶等信息),DBMS查找數(shù)據(jù)字典,根據(jù)安全規(guī)則進(jìn)行合法權(quán)限檢查,若用戶的操作請(qǐng)求超出了定義的權(quán)限,系統(tǒng)將拒絕執(zhí)行此操作。數(shù)據(jù)庫(kù)角色:數(shù)據(jù)庫(kù)角色是被命名的一組與數(shù)據(jù)庫(kù)操作相關(guān)的權(quán)限,角色是權(quán)限的集合??梢詾橐唤M具有相同權(quán)限的用戶創(chuàng)建一個(gè)角色,使用角色來(lái)管理數(shù)據(jù)庫(kù)權(quán)限可以簡(jiǎn)化授權(quán)的過(guò)程事務(wù):事務(wù)是構(gòu)成單一邏輯工作單元的操作集合。并發(fā)操作:在多用戶共享系統(tǒng)中,許多事務(wù)可能同時(shí)對(duì)同一數(shù)據(jù)進(jìn)行操作,這種操作稱為并發(fā)操作。封鎖:封鎖是系統(tǒng)保證對(duì)數(shù)據(jù)項(xiàng)的訪問(wèn)以互斥方式進(jìn)行的一種手段。X鎖:事務(wù)T對(duì)某數(shù)據(jù)加了X鎖后,其他事務(wù)要等T解除X鎖后,才能對(duì)這個(gè)數(shù)據(jù)進(jìn)行封鎖。PX協(xié)議:只有獲準(zhǔn)X鎖的事務(wù),才能修改數(shù)據(jù),否則這個(gè)事務(wù)進(jìn)入等待狀態(tài)。PXC協(xié)議:PX協(xié)議再加上一條規(guī)則:“X鎖必須保留到事務(wù)終點(diǎn)才能解除”。S鎖:事務(wù)T對(duì)某數(shù)據(jù)加了S鎖后,仍允許其他事務(wù)再對(duì)該數(shù)據(jù)加S鎖,但在對(duì)該數(shù)據(jù)的所有S鎖都解除之前決不允許任何事務(wù)對(duì)該數(shù)據(jù)加X(jué)鎖。PS協(xié)議:只有獲準(zhǔn)X鎖的事務(wù),才能修改數(shù)據(jù),否則這個(gè)事務(wù)進(jìn)入等待狀態(tài)。PSC協(xié)議:PX協(xié)議再加上一條規(guī)則:“X鎖必須保留到事務(wù)終點(diǎn)才能解除”?;铈i:系統(tǒng)可能使某個(gè)事務(wù)永遠(yuǎn)處于等待狀態(tài),得不到封鎖的機(jī)會(huì),這種現(xiàn)象稱為“活鎖”。餓死:若干事務(wù)連續(xù)不斷地對(duì)某數(shù)據(jù)實(shí)現(xiàn)加S鎖和釋放S鎖的操作,那么若有一個(gè)事務(wù)欲對(duì)該數(shù)據(jù)加X(jué)鎖,將永遠(yuǎn)輪不上封鎖的機(jī)會(huì)。這種現(xiàn)象稱為“餓死”。死鎖:若干事務(wù)都處于等待狀態(tài),相互等待對(duì)方解除封鎖,結(jié)果造成這些事務(wù)都無(wú)法繼續(xù)執(zhí)行,這種現(xiàn)象稱為系統(tǒng)進(jìn)入了“死鎖”狀態(tài)。串行調(diào)度:多個(gè)事務(wù)依次執(zhí)行,稱為事務(wù)的串行調(diào)度。并發(fā)調(diào)度:利用分時(shí)的方法,同時(shí)處理多個(gè)事務(wù),則稱為事務(wù)的并發(fā)調(diào)度??纱谢{(diào)度:如果一個(gè)并發(fā)調(diào)度的執(zhí)行結(jié)果與某一串行調(diào)度的執(zhí)行結(jié)果等價(jià),那么這個(gè)并發(fā)調(diào)度稱為“可串行化的調(diào)度”。兩段封鎖協(xié)議:事務(wù)分成兩個(gè)階段,前一階段只能申請(qǐng)封鎖,后一階段只能釋放封鎖,這一規(guī)則稱為事務(wù)的兩段封鎖協(xié)議。約束:約束是Microsoft SQL Server提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整性的一種方法,它定義了可輸入表或表的單個(gè)列中的數(shù)據(jù)的限制條件。它是用來(lái)維護(hù)關(guān)系數(shù)據(jù)中數(shù)據(jù)的正確性和一致性、保證數(shù)據(jù)庫(kù)完整性的必要條件。規(guī)則:規(guī)則是數(shù)據(jù)庫(kù)中對(duì)存儲(chǔ)在表的列或用戶定義數(shù)據(jù)類型中值的規(guī)定和限制。規(guī)則同默認(rèn)值一樣,也是單獨(dú)存儲(chǔ)的獨(dú)立數(shù)據(jù)庫(kù)對(duì)象。規(guī)則與其作用的表或用戶定義數(shù)據(jù)類型是相互獨(dú)立的,即表或用戶定義數(shù)據(jù)類型的刪除、修改不會(huì)對(duì)與之相連的規(guī)則產(chǎn)生影響。更新鎖(U鎖):當(dāng)一個(gè)事務(wù)查詢數(shù)據(jù)以便進(jìn)行修改時(shí),可以對(duì)數(shù)據(jù)項(xiàng)施加更新鎖,如果事務(wù)修改資源,則更新鎖會(huì)轉(zhuǎn)換成排他鎖,否則會(huì)轉(zhuǎn)換成共享鎖。一次只有一個(gè)事務(wù)可以獲得資源上的更新鎖,它允許其他事務(wù)對(duì)資源的共享式訪問(wèn),但阻止排他式的訪問(wèn)。完整數(shù)據(jù)庫(kù)備份:完整數(shù)據(jù)庫(kù)備份就是備份整個(gè)數(shù)據(jù)庫(kù)。它備份數(shù)據(jù)庫(kù)文件、這些文件的地址以及事務(wù)日志的某些部分(從備份開(kāi)始時(shí)所記錄的日志順序號(hào)到備份結(jié)束時(shí)的日志順序號(hào))。差異數(shù)據(jù)庫(kù)備份:差異數(shù)據(jù)庫(kù)備份是指將從最近一次完全數(shù)據(jù)庫(kù)備份以后發(fā)生改變的數(shù)據(jù)進(jìn)行備份。如果在完整備份后將某個(gè)文件添加至數(shù)據(jù)庫(kù),則下一個(gè)差異備份將會(huì)包括該新文件。這樣可以方便地備份數(shù)據(jù)庫(kù),而無(wú)須了解各個(gè)文件。事務(wù)日志備份:事務(wù)日志備份就是自從上一個(gè)事務(wù)以來(lái)已經(jīng)發(fā)生了變化的部分。事務(wù)日志備份比完整數(shù)據(jù)庫(kù)備份節(jié)省時(shí)間和空間,而且利用事務(wù)日志備份進(jìn)行恢復(fù)時(shí),可以指定恢復(fù)到某一個(gè)事務(wù)。文件組備份:文件組備份就是對(duì)數(shù)據(jù)庫(kù)中的部分文件或文件組進(jìn)行備份。文件組是一種將數(shù)據(jù)庫(kù)存放在多個(gè)文件上的方法,并允許控制數(shù)據(jù)庫(kù)對(duì)象(比如表或視圖)存儲(chǔ)到這些文件當(dāng)中的某些文件上。72 試敘述事務(wù)的四個(gè)性質(zhì),并解釋每一個(gè)性質(zhì)由DBMS的哪個(gè)子系統(tǒng)實(shí)現(xiàn)?每一個(gè)性質(zhì)對(duì)DBS有什么益處?答:① 事務(wù)的原子性,是指一個(gè)事務(wù)對(duì)DB的所有操作,是一個(gè)不可分割的工作單元。原子性是由DBMS的事務(wù)管理子系統(tǒng)實(shí)現(xiàn)的。事務(wù)的原子性保證了DBS的完整性。② 事務(wù)的一致性,是指數(shù)據(jù)不會(huì)因事務(wù)的執(zhí)行而遭受破壞。事務(wù)的一致性是由DBMS的完整性子系統(tǒng)實(shí)現(xiàn)的。事務(wù)的一致性保證數(shù)據(jù)庫(kù)的完整性。③事務(wù)的隔離性,是指事務(wù)的并發(fā)執(zhí)行與這些事務(wù)單獨(dú)執(zhí)行時(shí)結(jié)果一樣。事務(wù)的隔離性是由DBMS的并發(fā)控制子系統(tǒng)實(shí)現(xiàn)的。隔離性使并發(fā)執(zhí)行的事務(wù)不必關(guān)心其他事務(wù),如同在單用戶環(huán)境下執(zhí)行一樣。④事務(wù)的持久性,是指事務(wù)對(duì)DB的更新應(yīng)永久地反映在DB中。持久性是由DBMS的恢復(fù)管理子系統(tǒng)實(shí)現(xiàn)的。持久性能保證DB具有可恢復(fù)性。73 設(shè)有兩個(gè)關(guān)系模式:職工(職工號(hào),姓名,年齡,職務(wù),工資,部門號(hào))部門(部門號(hào),名稱,經(jīng)理名,地址,電話號(hào))請(qǐng)用SQL的GRANT和REVOKE語(yǔ)句完成以下授權(quán)定義:⑴ 用戶王明對(duì)兩個(gè)表有SELECT權(quán)限;⑵用戶李勇對(duì)兩個(gè)表有INSERT和DELETE權(quán)限;⑶ 每個(gè)職工只對(duì)自己的記錄有SELECT權(quán)限;⑷ 用戶劉星對(duì)職工表有SELECT權(quán)限,對(duì)工資字段具有更新權(quán)限;⑸ 撤銷各用戶所授予的權(quán)限。解:⑴ GRANT SELECT ON TABLE 職工,部門 TO 王明⑵ GRANT INSERT,DELETE ON TABLE 職工,部門 TO 李勇⑶ GRANT SELECT ON 職工 WHEN USER()=NAME TO ALL⑷ GRANT SELECT,UPDATE(工資) ON TABLE 職工 TO 劉星⑸ ① 撤銷用戶王明對(duì)兩個(gè)表有SELECT權(quán)限; REVOKE SELECT ON 職工,部門 FROM 王明。 ② 撤銷用戶李勇對(duì)兩個(gè)表有INSERT和DELETE權(quán)限; REVOKE INSERT,DELECT ON 職工,部門 FROM 李勇。 ③ 撤銷每個(gè)職工只對(duì)自己的記錄有SELECT權(quán)限; REVOKE SELECT ON 職工 WHEN USER()=NAME FROM ALL。 ④ 撤銷用戶劉星對(duì)職工表有SELECT權(quán)限,對(duì)工資字段具有更新權(quán)限; REVOKE SELECT,UPDATE ON 職工 FROM 劉星74 什么是數(shù)據(jù)庫(kù)中的自主存取控制方法和強(qiáng)制存取控制方法?答:在自主存取控制中,用戶具有不同的存取權(quán)限,不同的用戶對(duì)同一對(duì)象也有不同的權(quán)限,而且用戶還可以將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶。在強(qiáng)制存取控制中,每一個(gè)數(shù)據(jù)庫(kù)對(duì)象被標(biāo)以一定的密級(jí),每一個(gè)用戶也被授予某一個(gè)級(jí)別的許可證。對(duì)于任意一個(gè)對(duì)象,只有具有合法許可證的用戶才可以存取。75 事務(wù)的COMMIT語(yǔ)句和ROLLBACK語(yǔ)句各做什么事情?答:COMMIT語(yǔ)句表示事務(wù)執(zhí)行成功地結(jié)束(提交),此時(shí)告訴系統(tǒng),DB要進(jìn)入一個(gè)新的正確狀態(tài),該事務(wù)對(duì)DB的所有更新都已交付實(shí)施(寫(xiě)入磁盤)。ROLLBACK語(yǔ)句表示事務(wù)執(zhí)行不成功地結(jié)束(應(yīng)該“回退”)此時(shí)告訴系統(tǒng),已發(fā)生錯(cuò)誤,DB可能處于不正確的狀態(tài),該事務(wù)對(duì)DB的所有更新必須被撤銷,DB應(yīng)恢復(fù)該事務(wù)到初始狀態(tài)。76 “檢查點(diǎn)技術(shù)”的主要思想是什么?COMMIT語(yǔ)句與檢查點(diǎn)時(shí)刻的操作如何協(xié)調(diào)?答:“檢查點(diǎn)機(jī)制”的主要思想是在檢查點(diǎn)時(shí)刻才真正做到把對(duì)DB的修改寫(xiě)到磁盤。在DB恢復(fù)時(shí),只有那些在最后一個(gè)檢查點(diǎn)到故障點(diǎn)之間還在執(zhí)行的事務(wù)才需要恢復(fù)。事務(wù)在COMMIT時(shí),事務(wù)對(duì)DB的更新已提交,但對(duì)DB的更新可能還留在內(nèi)存的緩沖區(qū),在檢查點(diǎn)時(shí)刻才真正寫(xiě)到磁盤。因此事務(wù)的真正結(jié)束是在COMMIT后還要加上遇到檢查點(diǎn)時(shí)刻。77 什么是“運(yùn)行記錄優(yōu)先原則”?其作用是什么?答:寫(xiě)一個(gè)修改到DB中和寫(xiě)一個(gè)表示這個(gè)修改的登記記錄到日志文件中是兩個(gè)不同的操作,后者比前者重要,后者應(yīng)先做。這就是運(yùn)行記錄優(yōu)先原則。其作用是保證DBS具有可恢復(fù)性。78 試敘述“串行調(diào)度”與“可串行化調(diào)度”的區(qū)別?答:如果多個(gè)事務(wù)依次執(zhí)行,則稱事務(wù)串行調(diào)度。如果利用分時(shí)的方法處理多個(gè)事務(wù),則稱為事務(wù)的并發(fā)調(diào)度。如果一個(gè)并發(fā)調(diào)度的結(jié)果與某一串行調(diào)度執(zhí)行結(jié)果等價(jià),則稱這個(gè)并發(fā)調(diào)度是可串行化調(diào)度。79 試敘述數(shù)據(jù)庫(kù)鏡像的優(yōu)缺點(diǎn)?答:數(shù)據(jù)庫(kù)鏡像的優(yōu)點(diǎn):一旦出現(xiàn)介質(zhì)故障,可由鏡像磁盤繼續(xù)提供使用,同時(shí)DBMS自動(dòng)利用鏡像磁盤數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù),不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫(kù)副本。數(shù)據(jù)庫(kù)鏡像的缺點(diǎn):由于數(shù)據(jù)庫(kù)鏡像是通過(guò)復(fù)制數(shù)據(jù)實(shí)現(xiàn)的,頻繁地復(fù)制數(shù)據(jù)自然會(huì)降低系統(tǒng)運(yùn)行效率。710 試敘述在SQL Server 2005中對(duì)數(shù)據(jù)庫(kù)進(jìn)行安全管理的幾個(gè)方面? 答:SQL Server 2005中廣泛使用安全主體和安全對(duì)象管理安全。一個(gè)服務(wù)器、數(shù)據(jù)庫(kù)或架構(gòu)資源的實(shí)體稱為安全主體。每一個(gè)安全主體都有唯一的安全標(biāo)識(shí)符。安全主體在3個(gè)級(jí)別上進(jìn)行管理:Windows、SQL Server和數(shù)據(jù)庫(kù)。安全主體的級(jí)別決定了安全主體的影響范圍,而數(shù)據(jù)庫(kù)級(jí)別的安全主體的影響范圍是特定的數(shù)據(jù)庫(kù)。711 試敘述在SQL Server 2005中規(guī)則與CHECK約束不同點(diǎn)?答:在SQL Server 2005中規(guī)則與CHECK約束的不同之處有以下三點(diǎn):⑴ CHECK 約束是在創(chuàng)建表時(shí)指定的,而規(guī)則可以作為單獨(dú)的數(shù)據(jù)庫(kù)對(duì)象來(lái)對(duì)列約束;⑵ 在同一表的列中,可以有一個(gè)規(guī)則及多個(gè)CHECK約束; ⑶ 規(guī)則可以應(yīng)用于多個(gè)列,還可以應(yīng)用于用戶定義數(shù)據(jù)類型,而CHECK約束只能用于它定義的列。712 簡(jiǎn)述在SQL Server 2005中查看鎖的兩種方式。答:在SQL Server 2005中查看鎖的兩種方式為:⑴ Server內(nèi)的加鎖情況。⑵ 使用SQL Server Management Studio可以實(shí)現(xiàn)圖形化顯示加鎖信息。713 簡(jiǎn)述在SQL Server 2005中完全備份、差異備份、事務(wù)日志備份以及文件和文件組備份各有什么特點(diǎn)?答:完整數(shù)據(jù)庫(kù)備份就是備份數(shù)據(jù)庫(kù)文件、這些文件的地址以及事務(wù)日志的某些部分(從備份開(kāi)始時(shí)所記錄的日志順序號(hào)到備份結(jié)束時(shí)的日志順序號(hào))。這是任何備份策略中都要求完成的一種備份類型。差異數(shù)據(jù)庫(kù)備份是指將從最近一次完全數(shù)據(jù)庫(kù)備份以后發(fā)生改變的數(shù)據(jù)進(jìn)行備份。如果在完整備份后將某個(gè)文件添加至數(shù)據(jù)庫(kù),則下一個(gè)差異備份將會(huì)包括該新文件。這樣可以方便地備份數(shù)據(jù)庫(kù),而無(wú)須了解各個(gè)文件。盡管事務(wù)日志備份就是備份自從上一個(gè)事務(wù)以來(lái)已經(jīng)發(fā)生了變化的部分。事務(wù)日志備份比完整數(shù)據(jù)庫(kù)備份節(jié)省時(shí)間和空間,而且利用事務(wù)日志備份進(jìn)行恢復(fù)時(shí),可以指定恢復(fù)到某一個(gè)事務(wù)。文件組備份允許控制數(shù)據(jù)庫(kù)對(duì)象(比如表或視圖)存儲(chǔ)到這些文件當(dāng)中的某些文件上。數(shù)據(jù)庫(kù)不會(huì)受到只存儲(chǔ)在單個(gè)硬盤上的限制,而是可以分散到許多硬盤上。714 某企業(yè)的SQL Server 2005數(shù)據(jù)庫(kù)每周日12點(diǎn)進(jìn)行一次完整備份,每天晚上24點(diǎn)進(jìn)行一次差異備份,每小時(shí)進(jìn)行一次事務(wù)日志備份,數(shù)據(jù)庫(kù)在2009716 6:30崩潰,應(yīng)如何將其恢復(fù)從而使數(shù)據(jù)庫(kù)損失最小?答:2009年7月16日是星期四,在此前的星期日(2009年7月12日)的12點(diǎn)進(jìn)行了一次完整備份,在2009年7月15日晚上24點(diǎn)又進(jìn)行了自完整備份以來(lái)的差異備份,而每小時(shí)進(jìn)行一次事務(wù)日志備份?;謴?fù)時(shí),依次恢復(fù)完整備份、差異備份、事務(wù)日志備份,這樣最多只會(huì)丟失2009年7月16日6點(diǎn)到6點(diǎn)30分這30分之內(nèi)的數(shù)據(jù)。習(xí)題881 什么是ODBC?如何創(chuàng)建ODBC數(shù)據(jù)源?答: ODBC是Microsoft的視窗開(kāi)放系統(tǒng)體系結(jié)構(gòu)(WOSA)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)API(Application Program Interface,應(yīng)用程序編程接口)。這些API利用SQL來(lái)完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶可以直接將SQL語(yǔ)句傳送給ODBC。以在Windows xp操作系統(tǒng)下為例介紹如何建立ODBC的連接,創(chuàng)建ASP程序使用的DSN。步驟如下: ① 單擊【開(kāi)始】|【設(shè)置】|【控制面板】命令,打開(kāi)控制面板。② 雙擊【管理工具】按鈕,打開(kāi)管理工具,在管理工具窗口中雙擊【數(shù)據(jù)源(ODBC)】,打開(kāi)ODBC數(shù)據(jù)源管理器,單擊【系統(tǒng)DSN】選項(xiàng)卡。③ 單擊【添加】按鈕,彈出【創(chuàng)建新數(shù)據(jù)源】對(duì)話框,選擇【SQL Server】選項(xiàng)。④ 單擊“完成”按鈕,彈出創(chuàng)建數(shù)據(jù)源對(duì)話框。在“名稱”編輯框中輸入數(shù)據(jù)源名,如本例中JWGL;在“服務(wù)器”從列表框中選擇要連接的SQL Se