數(shù)據(jù)庫(kù)安全技術(shù)及應(yīng)用.ppt

上傳人:max****ui 文檔編號(hào):14506119 上傳時(shí)間:2020-07-22 格式:PPT 頁(yè)數(shù):82 大?。?49.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)據(jù)庫(kù)安全技術(shù)及應(yīng)用.ppt_第1頁(yè)
第1頁(yè) / 共82頁(yè)
數(shù)據(jù)庫(kù)安全技術(shù)及應(yīng)用.ppt_第2頁(yè)
第2頁(yè) / 共82頁(yè)
數(shù)據(jù)庫(kù)安全技術(shù)及應(yīng)用.ppt_第3頁(yè)
第3頁(yè) / 共82頁(yè)

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《數(shù)據(jù)庫(kù)安全技術(shù)及應(yīng)用.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫(kù)安全技術(shù)及應(yīng)用.ppt(82頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第6章 數(shù)據(jù)庫(kù)安全技術(shù),目 錄,,本章要點(diǎn)及教學(xué)目標(biāo),,本章要點(diǎn) 數(shù)據(jù)庫(kù)的安全性、權(quán)限及監(jiān)控方法 數(shù)據(jù)完整性控制 并發(fā)控制與封鎖技術(shù) 數(shù)據(jù)備份與恢復(fù) 數(shù)據(jù)庫(kù)安全解決方案 教學(xué)目標(biāo) 理解數(shù)據(jù)庫(kù)的安全性、權(quán)限及監(jiān)控方法 了解數(shù)據(jù)完整性控制、并發(fā)控制與封鎖技術(shù) 掌握數(shù)據(jù)備份與恢復(fù) 理解數(shù)據(jù)庫(kù)安全解決方案,重點(diǎn),6.1 數(shù)據(jù)庫(kù)的安全性,6.1.1數(shù)據(jù)庫(kù)安全性問(wèn)題 1數(shù)據(jù)庫(kù)安全性的概念 數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù),以防止非法使用所造成的數(shù)據(jù)泄漏、更改或破壞。數(shù)據(jù)庫(kù)管理系統(tǒng)安全性保護(hù)是通過(guò)各種防范措施以防止用戶越權(quán)使用數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)系統(tǒng)中一般采用用戶標(biāo)識(shí)和鑒別、存取控制、

2、視圖以及密碼存儲(chǔ)等技術(shù)進(jìn)行安全控制。數(shù)據(jù)庫(kù)安全的核心和關(guān)鍵是其數(shù)據(jù)安全。 數(shù)據(jù)安全是指防止數(shù)據(jù)信息被故意的或偶然的非授權(quán)泄露、更改、破壞或使數(shù)據(jù)信息被非法的系統(tǒng)辨識(shí)與控制。以確保數(shù)據(jù)的完整性、保密性、可用性和可控性。由于數(shù)據(jù)庫(kù)保存著大量的重要信息和機(jī)密數(shù)據(jù),而且在數(shù)據(jù)庫(kù)系統(tǒng)中大量數(shù)據(jù)集中存放,為許多用戶共享,因此,加強(qiáng)對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的控制和數(shù)據(jù)安全防護(hù)至關(guān)重要。,主要指標(biāo)之一,6.1 數(shù)據(jù)庫(kù)的安全性,數(shù)據(jù)庫(kù)安全分為系統(tǒng)安全性和數(shù)據(jù)安全性. 系統(tǒng)安全性是指在系統(tǒng)級(jí)控制數(shù)據(jù)庫(kù)的存取和使用的機(jī)制,包含: (1) 有效的用戶名/口令的組合; (2) 對(duì)用戶可連接數(shù)據(jù)庫(kù)授權(quán); (3) 用戶對(duì)象可

3、用的磁盤(pán)空間的數(shù)量; (4) 用戶的資源限制; (5) 數(shù)據(jù)庫(kù)審計(jì)有效性; (6) 用戶可執(zhí)行的系統(tǒng)操作。 數(shù)據(jù)安全性是在對(duì)象級(jí)控制數(shù)據(jù)庫(kù)的存取和使用的機(jī)制,包括用戶可存取指定的模式對(duì)象及在對(duì)象上允許具體操作類(lèi)型。 【案例6-1】某銀行以數(shù)據(jù)安全業(yè)務(wù)價(jià)值鏈,可將數(shù)據(jù)庫(kù)安全的技術(shù)手段分為預(yù)防保護(hù)類(lèi)、檢測(cè)跟蹤類(lèi)和響應(yīng)恢復(fù)類(lèi)等3大類(lèi),如圖6-1所示:,圖6-1 數(shù)據(jù)庫(kù)安全關(guān)鍵技術(shù),6.1 數(shù)據(jù)庫(kù)的安全性,2SQL Server的安全性 SQL Server系統(tǒng)負(fù)責(zé)管理大量的業(yè)務(wù)數(shù)據(jù),保證其業(yè)務(wù)數(shù)據(jù)的安全是數(shù)據(jù)庫(kù)管理員DBA的一項(xiàng)最重要任務(wù)。SQL erver系統(tǒng)提供了強(qiáng)大的安全機(jī)制來(lái)保證數(shù)

4、據(jù)的安全。安全性包括3個(gè)方面:管理規(guī)章制度方面的安全性、數(shù)據(jù)庫(kù)服務(wù)器物理方面的安全性和數(shù)據(jù)庫(kù)服務(wù)器邏輯方面的安全性。在此主要討論數(shù)據(jù)庫(kù)服務(wù)器邏輯方面的安全性,身份驗(yàn)證模式是SQL Server系統(tǒng)驗(yàn)證客戶端和服務(wù)器之間連接的方式。SQL系統(tǒng)提供了兩種身份驗(yàn)證模式:Windows身份驗(yàn)證模式和混合模式。 3. SQL Server的安全機(jī)制 SQL Server具有權(quán)限層次安全機(jī)制。SQL Server 2005的安全性管理可分為3個(gè)等級(jí):操作系統(tǒng)級(jí)、SQL Server級(jí)和數(shù)據(jù)庫(kù)級(jí)。,6.1 數(shù)據(jù)庫(kù)的安全性,(1)操作系統(tǒng)級(jí)的安全性 用戶使用客戶機(jī)通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)SQL Server服務(wù)器訪

5、問(wèn)時(shí),首先要獲得操作系統(tǒng)的使用權(quán)。SQL可直接訪問(wèn)網(wǎng)絡(luò)端口,對(duì)Windows安全體系以外的服務(wù)器及其數(shù)據(jù)庫(kù)的訪問(wèn)。由于SQL采用了集成Windows網(wǎng)絡(luò)安全性機(jī)制,所使得OS安全性提高。 (2)SQL Server級(jí)的安全性 SQL Server 的服務(wù)器級(jí)安全性建立在控制服務(wù)器登錄帳號(hào)和口令基礎(chǔ)上。采用標(biāo)準(zhǔn)SQL Server登錄和集成Windows NT登錄兩種方式。用戶在登錄時(shí)提供的登錄帳號(hào)和口令,決定了用戶能否獲得SQL Server的訪問(wèn)權(quán)和在獲得訪問(wèn)權(quán)后擁有的具體權(quán)限。 (3)數(shù)據(jù)庫(kù)級(jí)的安全性 用戶通過(guò)SQL Server服務(wù)器的安全性檢驗(yàn)后,直接面對(duì)第三次安全性檢驗(yàn)。在建立用

6、戶的登錄帳號(hào)信息時(shí),提示用戶選擇默認(rèn)的數(shù)據(jù)庫(kù)。在默認(rèn)的情況下只有數(shù)據(jù)庫(kù)的擁有者才可訪問(wèn)該數(shù)據(jù)庫(kù)的對(duì)象,并分配訪問(wèn)權(quán)限給別的用戶,以便讓別的用戶也擁有該數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)利,在SQL Server中并不是所有的權(quán)利都可轉(zhuǎn)讓分配。,6.1 數(shù)據(jù)庫(kù)的安全性,6.1.2 數(shù)據(jù)庫(kù)權(quán)限管理 1. 權(quán)限管理概念 權(quán)限是執(zhí)行操作及訪問(wèn)數(shù)據(jù)的通行證。主體和安全對(duì)象之間通過(guò)權(quán)限相關(guān)聯(lián),主體可請(qǐng)求系統(tǒng)資源的用戶、組和進(jìn)程。SQL管理者可以通過(guò)權(quán)限保護(hù)分層實(shí)體(安全對(duì)象)集合。 權(quán)限用于控制用戶對(duì)數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn),指定用戶對(duì)數(shù)據(jù)庫(kù)可執(zhí)行的操作,用戶可以設(shè)置服務(wù)器和數(shù)據(jù)庫(kù)的權(quán)限。主要包括 3種權(quán)限:服務(wù)器權(quán)限(DBA)

7、、數(shù)據(jù)庫(kù)對(duì)象權(quán)限和數(shù)據(jù)庫(kù)權(quán)限。 (1) 服務(wù)器權(quán)限 服務(wù)器權(quán)限允許DBA執(zhí)行任務(wù)。權(quán)限定義在固定服務(wù)器角色中.這些角色可分配給登錄用戶,但這些角色是不能修改。一般只將服務(wù)器權(quán)限授給DBA,而不需修改或者授權(quán)給別的用戶登錄. (2) 數(shù)據(jù)庫(kù)對(duì)象權(quán)限 數(shù)據(jù)庫(kù)對(duì)象是授予用戶以允許他們?cè)L問(wèn)數(shù)據(jù)庫(kù)中對(duì)象的一類(lèi)權(quán)限,對(duì)象權(quán)限對(duì)于使用SQL語(yǔ)句訪問(wèn)表或視圖是必須的。,數(shù)據(jù)庫(kù)權(quán)限用于控制對(duì)象訪問(wèn)和語(yǔ)句執(zhí)行,6.1 數(shù)據(jù)庫(kù)的安全性,【案例6-2】在SQL Server Management Studio(簡(jiǎn)稱(chēng)SSMS)中給用戶添加對(duì)象權(quán)限。依次單擊“對(duì)象資源管理器”窗口中樹(shù)型節(jié)點(diǎn)前“”號(hào),直到展開(kāi)目標(biāo)數(shù)據(jù)庫(kù)“用

8、戶”節(jié)點(diǎn).在“用戶”節(jié)點(diǎn)下的目標(biāo)用戶上右鍵,彈出快捷菜單,選擇“屬性(R)”命令。,圖6-2 利用對(duì)象資源管理器為用戶添加對(duì)象權(quán)限,6.1 數(shù)據(jù)庫(kù)的安全性,(3) 數(shù)據(jù)庫(kù)權(quán)限 對(duì)象權(quán)限使用戶能夠訪問(wèn)存在于數(shù)據(jù)庫(kù)中的對(duì)象,除了數(shù)據(jù)庫(kù)對(duì)象權(quán)限外,還可給用戶分配數(shù)據(jù)庫(kù)權(quán)限。它除了授權(quán)用戶可以創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象和進(jìn)行數(shù)據(jù)庫(kù)備份外,還增加一些更改數(shù)據(jù)庫(kù)對(duì)象的權(quán)限。一個(gè)用戶可直接分配到權(quán)限也可作為一個(gè)角色中的成員間接得到權(quán)限.【案例6-3】通過(guò)下面方式給用戶添加數(shù)據(jù)庫(kù)權(quán)限。 在“對(duì)象資源管理器”窗口中,單擊服務(wù)器前的“+”號(hào),展開(kāi)服務(wù)器節(jié)點(diǎn)。單擊“數(shù)據(jù)庫(kù)”前的“+”號(hào),展開(kāi)數(shù)據(jù)庫(kù)節(jié)點(diǎn)。在要給用戶添加數(shù)據(jù)庫(kù)權(quán)限

9、的目標(biāo)數(shù)據(jù)庫(kù)上單擊鼠標(biāo)右鍵,彈出快捷菜單,如圖6-3所示,從中選擇“屬性(R)”命令。,圖6-3利用對(duì)象資源管理器為用戶添加DB權(quán)限,6.1 數(shù)據(jù)庫(kù)的安全性,2. SQL的安全模式與驗(yàn)證 (1)SQL的安全模式 SQL Server采用兩層安全模式:第一層是訪問(wèn)SQL ,驗(yàn)證連接人的有效賬號(hào)(稱(chēng)為登錄)。第二層訪問(wèn)數(shù)據(jù)庫(kù)。SQL支持多個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)都有各自的安全層,通過(guò)用戶賬號(hào)提供對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。在各數(shù)據(jù)庫(kù)中建立用戶時(shí),可根據(jù)需要限制對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。 (2)登錄身份驗(yàn)證模式及設(shè)置 用戶連接到SQL賬戶稱(chēng)為登錄:用戶為特定數(shù)據(jù)庫(kù)定義時(shí)才可創(chuàng)建。SQL為每一用戶分配了唯一的用戶名和密碼。可

10、為不同賬號(hào)授予不同的安全級(jí)別。訪問(wèn)SQL登錄有兩種驗(yàn)證模式:Windows身份驗(yàn)證和混合模式身份驗(yàn)證(登錄名和密碼)。SQL Server 與Windows 二者登錄安全過(guò)程結(jié)合起來(lái)提供安全登錄服務(wù)。網(wǎng)絡(luò)安全性通過(guò)向Windows 提供復(fù)雜加密過(guò)程進(jìn)行驗(yàn)證。用戶登錄一經(jīng)過(guò)驗(yàn)證,訪問(wèn)SQL Server不再需要其他身份驗(yàn)證。,6.1 數(shù)據(jù)庫(kù)的安全性,【案例6-4】在SSMS中設(shè)置身份驗(yàn)證模式的方法。 1)打開(kāi)SSMS并連接到目標(biāo)服務(wù)器,在“資源管理器”窗口中,在目標(biāo)服務(wù)器上單擊鼠標(biāo)右鍵,彈出快捷菜單,從中選擇“屬性”命令,如圖6-4所示. 2)出現(xiàn)“服務(wù)器屬性”窗口,選擇“選擇頁(yè)”中的“安全性”

11、選項(xiàng),進(jìn)入安全性設(shè)置頁(yè)面,如圖6-5所示。,圖6-4利用對(duì)象資源管理器設(shè)置身份驗(yàn)證模式 圖6-5服務(wù)器屬性窗口的安全性頁(yè)面,6.1 數(shù)據(jù)庫(kù)的安全性,3)在“服務(wù)器身份驗(yàn)證”選項(xiàng)級(jí)中選擇驗(yàn)證模式前的單選按鈕,選中需要的驗(yàn)證模式。用戶還可以在“登錄審核”選項(xiàng)級(jí)中設(shè)置需要的審核方式,如圖6-6所示。,圖6-6 服務(wù)器屬性,審核方式取決于安全性要求,4種審核級(jí)別為: “無(wú)”:不使用登錄審核. “僅限失敗的登錄”:記錄所有的失敗登錄。 “僅限成功的登錄”:記錄所有的成功登錄。 “失敗和成功的登錄”:記錄所有的登錄。 最后單擊“確定”按鈕,完成登錄驗(yàn)證模式的設(shè)置,6.1 數(shù)據(jù)庫(kù)的安全性,3. 權(quán)限的

12、管理 在SQL中,不同對(duì)象有不同的權(quán)限。權(quán)限管理的內(nèi)容包括:權(quán)限的類(lèi)型、授予權(quán)限、收回權(quán)限、否認(rèn)權(quán)限等幾個(gè)方面。 (1) 權(quán)限的種類(lèi) 權(quán)限的種類(lèi),可按照預(yù)先定義分為:預(yù)先定義的權(quán)限和預(yù)先未定義的權(quán)限。按照針對(duì)的對(duì)象也可分為:針對(duì)所有對(duì)象的權(quán)限和針對(duì)特殊對(duì)象的權(quán)限。常按權(quán)限等級(jí)分為3種:系統(tǒng)權(quán)限(隱含權(quán)限)、對(duì)象權(quán)限和語(yǔ)句權(quán)限。 1)系統(tǒng)權(quán)限(隱含權(quán)限)。是服務(wù)器級(jí)別上對(duì)整個(gè)服務(wù)器和數(shù)據(jù)庫(kù)進(jìn)行管理的權(quán)限。服務(wù)器角色sysadmin具有全部系統(tǒng)權(quán)限。數(shù)據(jù)庫(kù)對(duì)象所有者和服務(wù)器固定角色均具有這種權(quán)限,可對(duì)所擁有的對(duì)象執(zhí)行一切活動(dòng)。如擁有表的用戶可查看、添加或刪除數(shù)據(jù),更改表定義,或控制允許其他用

13、戶對(duì)表操作的權(quán)限。,6.1 數(shù)據(jù)庫(kù)的安全性,2)對(duì)象權(quán)限。用于控制一個(gè)用戶與一個(gè)數(shù)據(jù)庫(kù)對(duì)象交互操作,有5個(gè)不同的權(quán)限:查詢(xún)、插入、修改、刪除和執(zhí)行。 不同的安全對(duì)象具有不同的權(quán)限,對(duì)各對(duì)象主要操作包括:,表6-1 對(duì)象類(lèi)型和操作權(quán)限,6.1 數(shù)據(jù)庫(kù)的安全性,3)語(yǔ)句權(quán)限。授予用戶執(zhí)行相應(yīng)的語(yǔ)句命令的能力,可以決定用戶能否操作和創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象,語(yǔ)句權(quán)限(如 CREATE DATABASE)適用于語(yǔ)句自身,而不適用于數(shù)據(jù)庫(kù)中定義的特定對(duì)象。其語(yǔ)句權(quán)限主要包括: 表6-2語(yǔ)句權(quán)限的執(zhí)行操作,6.1 數(shù)據(jù)庫(kù)的安全性,(2) 授予權(quán)限 在SQL系統(tǒng)中,可使用GRANT語(yǔ)句將安全對(duì)象的權(quán)限授予給指定的

14、安全主體。這些可使用GRANT語(yǔ)句授權(quán)的安全對(duì)象包括應(yīng)用程序角色、程序集、非對(duì)稱(chēng)密鑰、證書(shū)、約定、數(shù)據(jù)庫(kù)、端點(diǎn)、全文目錄、函數(shù)、消息類(lèi)型、對(duì)象、隊(duì)列、角色、路由、架構(gòu)、服務(wù)器、服務(wù)、存儲(chǔ)過(guò)程、對(duì)稱(chēng)密鑰、系統(tǒng)對(duì)象、表、類(lèi)型、用戶、視圖、XML架構(gòu)集合等。GRANT語(yǔ)句的語(yǔ)法如下: GRANT ALL | permission ( column ,...n ) ,...n ON securable TO principal ,...n WITH GRANT OPTION 其中各參數(shù)的含義為: 1)ALL:該選項(xiàng)并不授予全部可能的權(quán)限。 2)permission:權(quán)限的名稱(chēng)。 3

15、)column:指定表中將授予其權(quán)限的列名稱(chēng)。需使用括號(hào)“()”。 4)securable:指定將授予其權(quán)限的安全對(duì)象。 5)TO principal:主體的名稱(chēng)。 6)GRANT OPTION:指示被授權(quán)者在獲得指定權(quán)限的同時(shí)還可將其權(quán)限授予其他主體。,6.1 數(shù)據(jù)庫(kù)的安全性,(3) 收回權(quán)限 利用REVOKE語(yǔ)句,可從某個(gè)安全主體處收回(也稱(chēng)撤銷(xiāo))權(quán)限.它與GRANT語(yǔ)句相對(duì)應(yīng),可將通過(guò)它授予給安全主體的權(quán)限收回(刪除),使用REVOKE語(yǔ)句也可收回對(duì)特定數(shù)據(jù)庫(kù)對(duì)象的權(quán)限。 收回權(quán)限是指不再賦予此權(quán)限,但并非禁止。因?yàn)橛脩艨赡軓慕巧欣^承了該項(xiàng)權(quán)限。REVOKE語(yǔ)句語(yǔ)法格式為:

16、 REVOKE GRANT OPTION FOR ALL |permission ( column ,...n ) ,...n ON securable TO | FROM principal ,...n CASCADE 其中各參數(shù)的含義為: 1)GRANT OPTION FOR:將撤銷(xiāo)授予指定權(quán)限的能力. 2)CASCADE:指示當(dāng)前正在撤銷(xiāo)的權(quán)限也將從其他被該主體授權(quán)的主體中撤銷(xiāo)。 其余參數(shù)的含義與GRANT語(yǔ)句中的各參數(shù)含義相同。,6.1 數(shù)據(jù)庫(kù)的安全性,(4) 拒絕(否認(rèn))權(quán)限 安全主體可以通過(guò)兩種方式獲得權(quán)限:直接使用GRANT語(yǔ)句

17、為其授予權(quán)限,通過(guò)作為角色成員繼承角色的權(quán)限。使用REVOKE語(yǔ)句只能刪除安全主體,通過(guò)方式得到的權(quán)限,要徹底刪除安全主體的指定權(quán)限必須使用DENY語(yǔ)句。DENY語(yǔ)法形式與REVOKE非常類(lèi)似。 使用DENY語(yǔ)句可以拒絕(否認(rèn))對(duì)特定數(shù)據(jù)庫(kù)對(duì)象的權(quán)限,防止主體通過(guò)其組或角色成員身份繼承權(quán)限。語(yǔ)法格式如下: DENY ALL | permission ( column ,...n ) ,...n ON securable TO principal ,...n CASCADE 其中:參數(shù)CASCADE指示拒絕授予指定主體該權(quán)限,同時(shí),拒絕該主體將該權(quán)限授予其他主體。其余參數(shù)的含義與

18、Grant語(yǔ)句中的各參數(shù)含義相同。,6.1 數(shù)據(jù)庫(kù)的安全性,4. 管理權(quán)限的設(shè)置 設(shè)置權(quán)限下面兩種方法各有利弊,前者操作簡(jiǎn)單而直觀,但不能設(shè)置表或視圖的列權(quán)限;用T-SQL語(yǔ)句操作功能齊較繁瑣。 (1) 使用SSMS(SQL Server Management Studio)設(shè)置權(quán)限 在“數(shù)據(jù)庫(kù)屬性”窗口,選擇“選擇頁(yè)”窗口中的“權(quán)限”項(xiàng),可以進(jìn)入“權(quán)限設(shè)置”頁(yè)面。 (2) 使用T-SQL語(yǔ)句設(shè)置權(quán)限 T-SQL語(yǔ)句中的權(quán)限設(shè)置有下面3種: 1)GRANT語(yǔ)句:允許權(quán)限。 2)REVOKE:禁止權(quán)限。 3)DENY:取消允許設(shè)置。 GRANT語(yǔ)句的權(quán)限設(shè)置語(yǔ)法格式為: GRANT

19、ALL | statement ,...n TO security_account ,...n REVOKE ALL | statement ,...n FROM security_account ,...n DENY ALL | statement ,...n TO security_account ,...n ,6.1 數(shù)據(jù)庫(kù)的安全性,6.1.3 安全監(jiān)控方法 1.登錄名管理 登錄名管理包括創(chuàng)建登錄名、設(shè)置密碼策略、查看登錄名信息、修改和刪除登錄名。登錄名管理的方法主要有兩種。 (1) 創(chuàng)建登錄名 創(chuàng)建基于Windows登錄名,創(chuàng)建SQL Server登錄名,查看登錄名

20、信息 【案例6-5】登錄屬于服務(wù)器級(jí)的安全策略,通過(guò)合法的登錄才能連接到數(shù)據(jù)庫(kù)。SQL系統(tǒng)登錄驗(yàn)證過(guò)程如圖6-7 所示.在SSMS中創(chuàng)建登錄的步驟如下。,1)打開(kāi)SSMS并連接到目標(biāo)服務(wù)器,在“對(duì)象資源管理器” 窗口中, 單擊“安全性”前的“”號(hào) .在“登錄名”上單擊鼠標(biāo)右鍵,彈出快捷菜單, 從中選擇“新建登錄”命令,如圖6-8所示。,圖6-8 利用對(duì)象資源管理器創(chuàng)建登錄,圖6-7 SQL Server系統(tǒng)登錄驗(yàn)證過(guò)程,6.1 數(shù)據(jù)庫(kù)的安全性,2)出現(xiàn)“登錄名”對(duì)話框,單擊需要?jiǎng)?chuàng)建的登錄模式前的單選按鈕,選定驗(yàn)證方式。如圖6-9所示,并完成“登錄名”、“密碼”、“確認(rèn)密碼”和其他參數(shù)設(shè)置。,

21、圖6-9 登錄名對(duì)話框,3)選擇“選擇頁(yè)”中的“服務(wù)器角色”項(xiàng),出現(xiàn)服務(wù)器角色設(shè)定頁(yè)面,用戶可為此用戶添加服務(wù)器角色。 4)選擇“登錄名”對(duì)話框中的“用戶映射”項(xiàng),進(jìn)入映射設(shè)置頁(yè)面,為新建的登錄添加映射到此登錄名的用戶,并添加數(shù)據(jù)庫(kù)角色,從而使該用戶獲得數(shù)據(jù)庫(kù)的相應(yīng)角色對(duì)應(yīng)的數(shù)據(jù)庫(kù)權(quán)限。最后單擊“確定”按鈕,完成登錄名創(chuàng)建。 (2)修改和刪除登錄名 DBA應(yīng)定期檢查訪問(wèn)的用戶.,6.1 數(shù)據(jù)庫(kù)的安全性,2.監(jiān)控錯(cuò)誤日志 用戶應(yīng)經(jīng)常查看SQL Server錯(cuò)誤日志。在查看時(shí),應(yīng)注意在正常情況下不應(yīng)出現(xiàn)的錯(cuò)誤消息。錯(cuò)誤日志的內(nèi)容不僅包括出錯(cuò)的消息,也包括大量關(guān)于事件狀態(tài)、版權(quán)信息等各類(lèi)消息。要求

22、學(xué)會(huì)在繁雜的錯(cuò)誤信息中找到關(guān)鍵的出錯(cuò)信息。當(dāng)瀏覽錯(cuò)誤日志時(shí),要特別注意以下的關(guān)鍵字:錯(cuò)誤、故障、表崩潰、16級(jí)錯(cuò)誤和嚴(yán)重錯(cuò)誤等。 查看日志2種方法:利用SSMS查看日志;利用文本編輯器查看日志。 3.記錄配置信息 當(dāng)無(wú)法啟動(dòng) SQL Server時(shí)借助服務(wù)器的配置信息,微軟公司技術(shù)支持部門(mén)可以幫助恢復(fù). 服務(wù)器的運(yùn)行。在日常的維護(hù)計(jì)劃中應(yīng)該安排對(duì)配置信息的維護(hù),特別是當(dāng)配置信息修改時(shí)。使用系統(tǒng)過(guò)程sp_configure 可以生成服務(wù)器的配置信息列表。 (1)打開(kāi)SSMS。 (2)選擇服務(wù)器,單擊“連接”按鈕,進(jìn)入SSMS窗口。 (3)打開(kāi)一個(gè)新的查詢(xún)窗口,可以輸入各種SQL命令。 (4)在查

23、詢(xún)窗口中輸入命令。,6.1 數(shù)據(jù)庫(kù)的安全性,6.1.4 用戶與角色管理 用戶是數(shù)據(jù)庫(kù)級(jí)的安全策略,在為數(shù)據(jù)庫(kù)創(chuàng)建新的用戶前,必須存在創(chuàng)建用戶的一個(gè)登錄或使用已經(jīng)存在的登錄創(chuàng)建用戶. 1. 使用SSMS創(chuàng)建用戶 【案例6-6】使用 SSMS創(chuàng)建用戶的具體步驟如下。 (1)打開(kāi)SSMS并連接到目標(biāo)服務(wù)器,在“對(duì)象資源管理器”窗口中,單擊“數(shù)據(jù)庫(kù)”節(jié)點(diǎn)前的“”號(hào),展開(kāi)數(shù)據(jù)庫(kù)節(jié)點(diǎn)。單擊要?jiǎng)?chuàng)建用戶的目標(biāo)數(shù)據(jù)節(jié)點(diǎn)前的“”號(hào), 展節(jié)點(diǎn)Northwind。單擊“安全性” 節(jié)點(diǎn)前的“”號(hào)。 在“用戶”上單擊鼠標(biāo)右鍵,彈出 快捷菜單,從中選擇“新建用戶” 命令,如圖6-10所示。,圖6-10 利用對(duì)象資源管理器

24、創(chuàng)建用戶,6.1 數(shù)據(jù)庫(kù)的安全性,(2)在出現(xiàn)“數(shù)據(jù)庫(kù)用戶新建”對(duì)話框的“常規(guī)”頁(yè)面中,填寫(xiě)“用戶名”,選擇“登錄名”和“默認(rèn)架構(gòu)”名稱(chēng)。添加此用戶擁有的架構(gòu)和數(shù)據(jù)庫(kù)角色。 (3)在“數(shù)據(jù)庫(kù)用戶新建”對(duì)話框的“選擇頁(yè)”中選擇“安全對(duì)象”,進(jìn)入權(quán)限設(shè)置頁(yè)面(即“安全對(duì)象”頁(yè)面). “安全對(duì)象頁(yè)面”主要用于設(shè)置數(shù)據(jù)庫(kù)用戶擁有的能夠訪問(wèn)的數(shù)據(jù)庫(kù)對(duì)象以及相應(yīng)的訪問(wèn)權(quán)限。單擊“添加”按鈕為該用戶添加數(shù)據(jù)庫(kù)對(duì)象,并為添加的對(duì)象添加顯示權(quán)限。 2角色管理 角色用來(lái)簡(jiǎn)化將很多權(quán)限分配給用戶這一復(fù)雜任務(wù)的管理。用戶可根據(jù)所執(zhí)行的任務(wù)成為一個(gè)或多個(gè)角色的成員。用戶可不必是任何角色的成員,也可為用戶分配個(gè)人權(quán)限。

25、,6.1 數(shù)據(jù)庫(kù)的安全性,1)在“對(duì)象資源管理器”中,單擊服務(wù)器前“+”號(hào)展開(kāi).單擊“安全性”節(jié)點(diǎn)前“+”號(hào).在次節(jié)點(diǎn)可看到固定服務(wù)器角色,在要給用戶添加的目標(biāo)角色上單擊鼠標(biāo)右鍵,彈出快捷菜單從中選擇“屬性”. 2)在“服務(wù)器角色屬性”對(duì)話框中,單擊“添加(A)”按鈕.3)在出現(xiàn)“選擇登陸名”對(duì)話框中單擊“瀏覽(B)”按鈕。 4)在出現(xiàn)“查找對(duì)象”對(duì)話框中,選擇目標(biāo)用戶前的復(fù)選框,選中其用戶,最后單擊“確定”按鈕. 5)回到“選擇登陸名”對(duì)話框,可以看到選中的目標(biāo)用戶已包含在對(duì)話框中,確定無(wú)誤后,單擊“確定”. 6)回到“服務(wù)器角色屬性”對(duì)話框。確定添加的用戶無(wú)誤后,單擊“確定” 。,圖6-1

26、1 利用對(duì)象資源管理器為用戶分配固定服務(wù)器角色,(1) 固定服務(wù)器角色 SQL安裝時(shí)就創(chuàng)建了在服務(wù)器級(jí)別上應(yīng)用大量預(yù)定義的角色,每個(gè)角色對(duì)應(yīng)著相應(yīng)的管理權(quán)限。通過(guò)給用戶分配固定服務(wù)器角色,可以使用戶具有執(zhí)行管理任務(wù)的角色權(quán)限。固定服務(wù)器角色的維護(hù)比單個(gè)權(quán)限容易,但是固定服務(wù)器角色不能修改。 【案例6-7】用SSMS為用戶分配固定服務(wù)器角色,從而使該用戶獲取相應(yīng)的權(quán)限。,6.1 數(shù)據(jù)庫(kù)的安全性,(2) 數(shù)據(jù)庫(kù)角色 在創(chuàng)建每個(gè)數(shù)據(jù)庫(kù)時(shí)都添加這些角色到新創(chuàng)建的數(shù)據(jù)庫(kù)中,每個(gè)角色對(duì)應(yīng)著相應(yīng)的權(quán)限。這些數(shù)據(jù)庫(kù)角色用于授權(quán)給數(shù)據(jù)庫(kù)用戶,擁有某種或某些角色的用戶會(huì)獲得相應(yīng)角色對(duì)應(yīng)的權(quán)限。 可為數(shù)據(jù)庫(kù)添加

27、角色,然后把角色分配給用戶,使用戶擁有相應(yīng)的權(quán)限,在SSMS中,給用戶添加角色(或?qū)⒔巧跈?quán)用戶)操作與將固定服務(wù)器角色授予用戶方法類(lèi)似,通過(guò)相應(yīng)角色的屬性對(duì)話框可方便添加用戶,使用戶成為角色成員。 用戶也可使用圖形界面工具Transact-SQL命令創(chuàng)建新角色,使之擁有某個(gè)或某些權(quán)限;創(chuàng)建的角色還可修改其對(duì)應(yīng)的權(quán)限。各種方法都需完成以下3項(xiàng)任務(wù):創(chuàng)建新的數(shù)據(jù)庫(kù)角色、給創(chuàng)建的角色分配權(quán)限、將角色授予某個(gè)用戶。 【案例6-8】在SSMS創(chuàng)建新的數(shù)據(jù)庫(kù)角色操作步驟如下。 展開(kāi)要添加新角色的目標(biāo)數(shù)據(jù)庫(kù),單擊目標(biāo)數(shù)據(jù)庫(kù)節(jié)點(diǎn)下的“安全性”節(jié)點(diǎn)前的“+”號(hào),展開(kāi)節(jié)點(diǎn)。然后在“角色”節(jié)點(diǎn)上單擊右鍵,彈出快捷

28、菜單,選擇快捷菜單中的“新建”下“ 新建數(shù)據(jù)庫(kù)角色”命令,如圖6-12所示。,6.1 數(shù)據(jù)庫(kù)的安全性,出現(xiàn)“數(shù)據(jù)庫(kù)角色-新建”對(duì)話框,在“常規(guī)”頁(yè)面中,添加“角色名稱(chēng)”和“所有者”,并選擇此角色所擁有的架構(gòu)。在此對(duì)話框中也可以單擊“添加”按鈕為新創(chuàng)建的角色添加用戶。 選擇“選擇頁(yè)”中的“安全對(duì)象”項(xiàng),進(jìn)入權(quán)限設(shè)置頁(yè)面(即“安全對(duì)象”頁(yè)面),之后可以為新創(chuàng)建的角色添加所擁有的數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn)權(quán)限。 此外,還可以使用 T-SQL語(yǔ)句來(lái)實(shí)現(xiàn)同樣目標(biāo)的相關(guān)內(nèi)容。,6-12新建數(shù)據(jù)庫(kù)角色,,6.2 完整性控制,6.2 完整性控制 6.2.1 數(shù)據(jù)的完整性 數(shù)據(jù)完整性(Data Integrity)是指數(shù)

29、據(jù)的精確性(Accuracy)和可靠性(Reliability)。用于防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)定的數(shù)據(jù),造成無(wú)效操作或錯(cuò)誤。DBMS提供一種檢查數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否滿足語(yǔ)義規(guī)定的條件的機(jī)制,數(shù)據(jù)語(yǔ)義檢查條件稱(chēng)為數(shù)據(jù)完整性約束條件,作為表定義的一部分存儲(chǔ)在數(shù)據(jù)庫(kù)中。DBMS中檢查數(shù)據(jù)完整性條件的機(jī)制就稱(chēng)為完整性檢查。 狹義上數(shù)據(jù)的完整性和安全性是數(shù)據(jù)庫(kù)保護(hù)的兩個(gè)不同的方面。安全性側(cè)重保護(hù)數(shù)據(jù)庫(kù),以防止非法使用所造成數(shù)據(jù)的泄露、更改或破壞,其防范對(duì)象是非法用戶和非法操作;完整性是防止合法用戶使用數(shù)據(jù)庫(kù)時(shí)向其中加入不符合語(yǔ)義的數(shù)據(jù),防范對(duì)象側(cè)重不合語(yǔ)義的數(shù)據(jù)。但從宏觀角度,安全性和完整性密切相關(guān),

30、完整性也屬于安全性范疇。,6.2 完整性控制,6.2.2 完整性規(guī)則構(gòu)成 由DBA或應(yīng)用開(kāi)發(fā)者所決定的一組預(yù)定義的完整性約束條件稱(chēng)為規(guī)則。關(guān)系數(shù)據(jù)庫(kù)允許可用完整性約束和數(shù)據(jù)庫(kù)觸發(fā)器定義各種數(shù)據(jù)完整性規(guī)則。數(shù)據(jù)完整性規(guī)則主要由以下3部分構(gòu)成: 觸發(fā)條件:規(guī)定系統(tǒng)何時(shí)使用規(guī)則檢查數(shù)據(jù); 約束條件:規(guī)定系統(tǒng)檢查用戶發(fā)出的操作請(qǐng)求違背了什么樣的完整性約束條件; 違約響應(yīng):規(guī)定系統(tǒng)如果發(fā)現(xiàn)用戶的操作請(qǐng)求違背了完整性約束條件,應(yīng)該采取一定的動(dòng)作來(lái)保證數(shù)據(jù)的完整性,即違約時(shí)要做的事情。 完整性規(guī)則從執(zhí)行時(shí)間上可分為立即執(zhí)行約束和延遲執(zhí)行約束.關(guān)系數(shù)據(jù)模型的完整性約束,是對(duì)表的列定義規(guī)則的說(shuō)明性方法,其完

31、整性約束條件包括3大類(lèi):實(shí)體完整性、參照完整性和用戶定義完整性.,6.2 完整性控制,6.2.3 完整性約束條件的分類(lèi) 數(shù)據(jù)的完整性約束可分以下兩類(lèi): 1從約束條件使用的對(duì)象分 從約束條件使用的對(duì)象分為值約束和結(jié)構(gòu)約束2種: (1)值約束:對(duì)數(shù)據(jù)類(lèi)型、數(shù)據(jù)格式、取值范圍及空值等進(jìn)行規(guī)定。 (2)結(jié)構(gòu)約束:即對(duì)數(shù)據(jù)之間聯(lián)系的約束。 數(shù)據(jù)庫(kù)中同一關(guān)系的不同屬性間應(yīng)滿足一定約束條件,同時(shí)不同關(guān)系的屬性間也有聯(lián)系也應(yīng)滿足一定約束條件。常見(jiàn)的結(jié)構(gòu)約束有4種: 1) 函數(shù)依賴(lài)約束。明確同一關(guān)系中不同屬性之間應(yīng)滿足的約束條件。 2) 實(shí)體完整性約束。規(guī)定鍵的屬性列必須唯一,其值不能為空或部分為空, 3)

32、參照完整性約束。規(guī)定不同關(guān)系的屬性之間的約束條件. 4) 統(tǒng)計(jì)約束。 2從約束對(duì)象的狀態(tài)分 從約束對(duì)象的狀態(tài)分為靜態(tài)約束和動(dòng)態(tài)約束2種。 (1)靜態(tài)約束.指對(duì)數(shù)據(jù)庫(kù)每一個(gè)確定狀態(tài)所應(yīng)滿足的約束條件,是反映數(shù)據(jù)庫(kù)狀態(tài)合理性的約束,這是最重要的一類(lèi)完整性約束。 (2)動(dòng)態(tài)約束.指數(shù)據(jù)庫(kù)從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時(shí),新舊值之間所應(yīng)滿足的約束條件,動(dòng)態(tài)約束反映的是數(shù)據(jù)庫(kù)狀態(tài)變遷的約束。,6.2 完整性控制,6.2.4 數(shù)據(jù)完整性的實(shí)施 數(shù)據(jù)庫(kù)采用多種方法以保證數(shù)據(jù)完整性,包括外鍵、束約、規(guī)則和觸發(fā)器。 1實(shí)現(xiàn)數(shù)據(jù)完整性的方法 1)在服務(wù)器端。定義表時(shí)聲明數(shù)據(jù)完整性,在服務(wù)器端以觸發(fā)器來(lái)實(shí)現(xiàn)。 2)在

33、客戶端。在應(yīng)用程序中編寫(xiě)代碼來(lái)保證。在客戶端實(shí)現(xiàn)數(shù)據(jù)完整性的好處是在將數(shù)據(jù)發(fā)送到服務(wù)器端之前,可以先進(jìn)行判斷,然后,只將正確的數(shù)據(jù)發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器。 2. 完整性約束條件的作用對(duì)象及實(shí)現(xiàn) 完整性約束條件的作用對(duì)象為: 字段(列)級(jí)約束:數(shù)據(jù)類(lèi)型、格式、取值范圍、空值約束 行(元組)級(jí)約束:各字段之間聯(lián)系的約束.訂貨數(shù)量小于等于庫(kù)存數(shù)量. 表(關(guān)系)級(jí)約束:表約束是指若干行之間、表之間的聯(lián)系的約束.如零件ID的取值不能重復(fù)也不能取空值。 具體實(shí)現(xiàn)包括:主關(guān)鍵字約束、外關(guān)鍵字約束、唯一性約束、檢查約束、缺省約束.約束提供了自動(dòng)保持?jǐn)?shù)據(jù)完整性的一種方法,6.2 完整性控制,(1)主關(guān)鍵字

34、約束 主關(guān)鍵字約束(Primary Key Constraint,簡(jiǎn)稱(chēng)主鍵約束)指定表的一列或幾列的組合的值在表中具有唯一性,每個(gè)表中只能有一列被指定為主關(guān)鍵字,且IMAGE 和TEXT 類(lèi)型的字段都不能被指定為主關(guān)鍵字,也不允許指定主關(guān)鍵字列有NULL 屬性。主鍵約束可以確保實(shí)體完整性??稍趧?chuàng)建表時(shí)定義主鍵約束,也可在以后改變表時(shí)添加。 定義主鍵約束時(shí)需指定約束名.如未指定SQL會(huì)自動(dòng)為該約束分配一名字。如果將主鍵約束定義在一個(gè)已包含數(shù)據(jù)的列上,那么,該列中已存在的數(shù)據(jù)將被檢查. 如果發(fā)現(xiàn)任何重復(fù)的值,則主鍵約束將被拒絕。其語(yǔ)法如下: CONSTRAINT constraint_name

35、 PRIMARY KEY CLUSTERED | NONCLUSTERED (column_name1, column_name2,,column_name16) 【案例6-9】創(chuàng)建訂單(Orders)表,訂單編號(hào)(cOrderNo)為主鍵. CREATE TABLE Orders ( cOrderNo CHAR(6) CONSTRAINTpkOrderNoPRIMARYKEYCLUSTERED, ) 也可用:ALTER TABLE Orders ADD CONSTRAINT pkOrderNo PRIMARY KEY CLUSTERED (cOrderNo),6.2

36、完整性控制,(2)外關(guān)鍵字約束 外關(guān)鍵字約束(Foreign Key Constraint,簡(jiǎn)稱(chēng)外鍵約束)定義了表之間的關(guān)系。當(dāng)一個(gè)表中的數(shù)據(jù)依賴(lài)于另一個(gè)表中的數(shù)據(jù)時(shí),你可以使用外鍵約束避免兩個(gè)表之間的不一致性。 當(dāng)一個(gè)表中的一個(gè)列/多個(gè)列的組合和其它表中的主關(guān)鍵字定義相同時(shí),就可以將這些列/列的組合定義為外關(guān)鍵字,并設(shè)定它適合哪個(gè)表中哪些列相關(guān)聯(lián)。還可以使用級(jí)聯(lián)更新和插入檢查方法。外鍵約束實(shí)施了引用完整性。與主關(guān)鍵字相同,不能使用一個(gè)定義為 TEXT 或IMAGE 數(shù)據(jù)類(lèi)型的列創(chuàng)建外關(guān)鍵字。外關(guān)鍵字最多由16個(gè)列組成。 外關(guān)鍵字約束語(yǔ)法如下: CONSTRAINT constraint_

37、name FOREIGN KEY (column_name1, column_name2,,column_name16) REFERENCES ref_table (ref_column1,ref_column2,, ref_column16) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION NOT FOR REPLICATION ,6.2 完整性控制,(3)唯一性約束 唯一性約束(Unique Constraint)指定一個(gè)或多個(gè)列的組合的值具有唯一性,以防止在列中輸入重復(fù)的值。唯一性約束指定

38、的列可有NULL屬性。 由于主關(guān)鍵字值具有唯一性,因此主關(guān)鍵字列不能再設(shè)定唯一性約束。唯一性約束最多由16個(gè)列組成。創(chuàng)建UNIQUE約束有關(guān)的規(guī)則為:可以創(chuàng)建在列級(jí),也可以創(chuàng)建在表級(jí)。不允許一個(gè)表中有兩行取相同的非空值。一個(gè)表中可有多個(gè)UNIQUE約束。即使指定了WITH NOCHECK 選項(xiàng),也不能阻止根據(jù)約束對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行的檢查.語(yǔ)法如下: CONSTRAINT constraint_name UNIQUE CLUSTERED | NONCLUSTERED (column_name1, column_name2,,column_name16 ),6.2 完整性控制,(4)檢查約束 檢查

39、約束(Check Constraint)通過(guò)限制插入列中的值來(lái)實(shí)施域完整性。可在一列上定義多個(gè)檢查約束.按定義次序?qū)嵤?。?dāng)約束被定義成表級(jí)時(shí),單一的檢查約束可被應(yīng)用到多列.語(yǔ)法如下: CONSTRAINT constraint_name CHECK NOT FOR REPLICATION(logical_expression) 1)IN關(guān)鍵字。用IN 關(guān)鍵字可以確保:鍵入的值被限制在一個(gè)常數(shù)表達(dá)式列表中。 2)LIKE關(guān)鍵字。使用LIKE關(guān)鍵字可通過(guò)通配符來(lái)確保輸入某一列的值符合一定的模式。 3)BETWEEN關(guān)鍵字??赏ㄟ^(guò)BETWEEN指明常數(shù)表達(dá)式的范圍。該范圍中包括上限值和下限值。如CH

40、ECK(siToyQoh BETWEEN 0 AND 100)。 (5)缺省約束 缺省約束(Default Constraint)可用于為某列指定一常數(shù)值,這樣用戶就不需要為該列插入值。只能在一列上創(chuàng)建一個(gè)缺省約束,且該列不能是IDENTITY列。 缺省約束通過(guò)定義列的默認(rèn)值或使用數(shù)據(jù)庫(kù)的默認(rèn)值對(duì)象綁定表的列,來(lái)指定列的默認(rèn)值。SQL Server 推薦使用缺省約束,而不使用定義默認(rèn)值的方式來(lái)指定列的默認(rèn)值。,6.2 完整性控制,語(yǔ)法如下: CONSTRAINT constraint_name DEFAULT constant_expression FOR column_name 如果

41、表已經(jīng)創(chuàng)建,而沒(méi)有指定缺省,則可用ALTER TABLE 命令來(lái)指定缺省: ALTER TABLE Shopper ADD CONSTRAINT defCity DEFAULT “Chicago” FOR cCity (6)在企業(yè)管理器中創(chuàng)建約束 通過(guò)“屬性”對(duì)話框選擇操作, 如圖6-13所示。,圖6-13 在企業(yè)管理器中創(chuàng)建約束,6.2 完整性控制,(7)系統(tǒng)對(duì)約束的檢查 1)主鍵約束。每當(dāng)用戶執(zhí)行插入數(shù)據(jù)時(shí),系統(tǒng)檢查新插入的數(shù)據(jù)的主鍵值是否與已存在的主鍵值重復(fù),或新插入的主鍵值是否為空. 2)唯一值約束。對(duì)唯一值約束的檢查同主鍵很類(lèi)似只是在檢查有唯一值約束的列時(shí),系統(tǒng)只需檢查新

42、插入數(shù)據(jù)或者更改后的有唯一值約束的列的值是否與表中已有數(shù)據(jù)有重復(fù),而不檢查是否有空值。只要新插人數(shù)據(jù)或更改后的值滿足不重復(fù)這個(gè)條件,才可進(jìn)行操作。 【注意】對(duì)于有唯一值約束的列,可以有空值,但整個(gè)列只允許有一個(gè)空值。系統(tǒng)會(huì)將后續(xù)的空值看成與第一個(gè)空值重復(fù)的值,因此全拒絕操作。 3)外鍵約束。 4)檢查約束 5)缺省約束,6.2 完整性控制,6.2.5完整性規(guī)則實(shí)現(xiàn) 規(guī)則(Rule)是數(shù)據(jù)庫(kù)中對(duì)存儲(chǔ)在表的列或用戶自定義數(shù)據(jù)類(lèi)型中的值的規(guī)定和限制。規(guī)則是單獨(dú)存儲(chǔ)的獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象。規(guī)則與其作用的表或用戶自定義數(shù)據(jù)類(lèi)型是相互獨(dú)立的。規(guī)則和約束可以同時(shí)使用,表的列可以有一個(gè)規(guī)則及多個(gè)檢查約束。 1

43、. 創(chuàng)建規(guī)則 (1)用命令創(chuàng)建 語(yǔ)法為:CREATE RULE rule_name AS condition_expression 其中condition_expression 子句是規(guī)則的定義??捎糜赪HERE 條件子句中的任何表達(dá)式,可包含算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和謂詞(IN、LIKE、BETWEEN 等)。 【注意】condition_expression 子句中的表達(dá)式必須以字符“”開(kāi)頭。,表6-3 規(guī)則的示例,6.2 完整性控制,(2)用企業(yè)管理器創(chuàng)建規(guī)則 在企業(yè)管理器中選擇數(shù)據(jù)庫(kù)對(duì)象“規(guī)則”,單擊右鍵從快捷菜單中可選“新建規(guī)則”項(xiàng)。 (3)使用規(guī)則的限制 某一個(gè)時(shí)刻只有一條

44、規(guī)則可綁定到某列或某用戶自定義數(shù)據(jù)類(lèi)型。如果一條規(guī)則被綁定到某用戶自定義數(shù)據(jù)類(lèi)型上,它并不會(huì)替代綁定到該數(shù)據(jù)類(lèi)型的列上的規(guī)則。如果一條新的規(guī)則綁定到某列或某數(shù)據(jù)類(lèi)型上,而該列或類(lèi)型上已經(jīng)綁定了一條規(guī)則,那么,新規(guī)則將替代舊規(guī)則。,2. 查看規(guī)則 語(yǔ)法: sp_helptext objname = name 如:exec sp_helptext birthday_defa 查看birthday_defa規(guī)則, 也可用企業(yè)管理器查看規(guī)則如圖所示,圖6-14 用企業(yè)管理器查看規(guī)則,6.2 完整性控制,3. 規(guī)則的綁定與松綁 創(chuàng)建規(guī)則后,規(guī)則只是一個(gè)存在于數(shù)據(jù)庫(kù)中的對(duì)象,并未發(fā)生作用。將規(guī)則與數(shù)

45、據(jù)庫(kù)表或用戶自定義對(duì)象聯(lián)系起來(lái),才能達(dá)到創(chuàng)建規(guī)則的目的。解除規(guī)則與對(duì)象的綁定稱(chēng)為“松綁”. (1)用存儲(chǔ)過(guò)程Sp_bindrule 綁定規(guī)則 語(yǔ)法:sp_bindrule rulename = rule, objname = object_name , futureonly 其中,參數(shù)為: rulename = rule:指定規(guī)則名稱(chēng)。 objname = object_name:指定規(guī)則綁定的對(duì)象。 futureonly:此選項(xiàng)僅在綁定規(guī)則到用戶自定義數(shù)據(jù)類(lèi)型上時(shí)才可以使用。當(dāng)指定此選項(xiàng)時(shí),僅以后使用此用戶自定義數(shù)據(jù)類(lèi)型的列會(huì)應(yīng)用新規(guī)則,而當(dāng)前已經(jīng)使用此數(shù)據(jù)類(lèi)型的列則不受影響

46、。,第6 章 數(shù)據(jù)庫(kù)安全,【案例6-14】綁定規(guī)則rulMaxPrice到用戶自定義數(shù)據(jù)類(lèi)型 MaxPrice上,帶futureonly選項(xiàng)。exec sp_bindrule rulMaxPrice, MaxPrice, futureonly 【注意】規(guī)則對(duì)已經(jīng)輸入表中的數(shù)據(jù)不起作用。 (2)用Sp_unbindrule解除規(guī)則的綁定 語(yǔ)法為:sp_unbindrule objname = object_name,futureonly 4. 刪除規(guī)則 語(yǔ)法為:DROP RULE rule_name ,...n 【注意】在刪除一個(gè)規(guī)則前,必須先將與其綁定的對(duì)象解除綁定。,6.2 完整性控

47、制,6.2.6 默認(rèn)值 默認(rèn)值(Default)也稱(chēng)缺省值,是往用戶輸入記錄時(shí)沒(méi)有指定具體數(shù)據(jù)的列中自動(dòng)插入的數(shù)據(jù)。默認(rèn)值對(duì)象與ALTER TABLE 或CREATE TABLE 命令操作表時(shí)用DEFAULT選項(xiàng)指定的默認(rèn)值功能相似,但默認(rèn)值對(duì)象可以用于多個(gè)列或用戶自定義數(shù)據(jù)類(lèi)型,它的管理與應(yīng)用同規(guī)則有許多相似之處。表的一列或一個(gè)用戶自定義數(shù)據(jù)類(lèi)型也只能與一個(gè)默認(rèn)值相綁定。 1. 創(chuàng)建默認(rèn)值 用CREATE DEFAULT 命令創(chuàng)建默認(rèn)值,用于在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建默認(rèn)值對(duì)象。其語(yǔ)法如下: CREATE DEFAULT default_name AS constant_expr

48、ession 其中constant_expression 子句是默認(rèn)值的定義,可以是數(shù)學(xué)表達(dá)式或函數(shù),也可以包含表的列名或其它數(shù)據(jù)庫(kù)對(duì)象。,6.2 完整性控制,【案例6-17】創(chuàng)建生日默認(rèn)值birthday_defa。 CREATE DEFAULT birthday_defa AS 1978-1-1 2. 默認(rèn)值的綁定與松綁 (1)用存儲(chǔ)過(guò)程Sp_bindefault 綁定默認(rèn)值 ,語(yǔ)法如下: sp_bindefault defname = default, objname = object_name , futureonly (2)用存儲(chǔ)過(guò)程Sp_unbindefault解除

49、默認(rèn)值的綁定,語(yǔ)法: Sp_unbindefault objname = object_name ,futureonly 3. 刪除默認(rèn)值 可以在企業(yè)管理器中選擇默認(rèn)值,單擊右鍵,從快捷菜單中選擇“刪除”選項(xiàng)刪除默認(rèn)值。也可使用DROP DEFAULT 命令刪除當(dāng)前數(shù)據(jù)庫(kù)默認(rèn)值。 其語(yǔ)法為:DROP DEFAULT default_name ,...n 【注意】在刪除一個(gè)默認(rèn)值前須先將與其綁定的對(duì)象解除綁定,6.3 并發(fā)控制與封鎖,6.3.1 并發(fā)操作帶來(lái)的問(wèn)題 為了充分利用數(shù)據(jù)資源,經(jīng)常進(jìn)行并行存取,就會(huì)發(fā)生多用戶并發(fā)存取同一數(shù)據(jù)塊的情況,即數(shù)據(jù)庫(kù)的并行操作。數(shù)據(jù)庫(kù)并發(fā)控制是對(duì)

50、多個(gè)用戶程序并行存取的控制機(jī)制,目的是避免數(shù)據(jù)的丟失修改、無(wú)效數(shù)據(jù)的讀出與不可重復(fù)讀數(shù)據(jù)現(xiàn)象的發(fā)生,從而保持?jǐn)?shù)據(jù)的一致性。 6.3.2 事務(wù) 1事務(wù) (1)事務(wù)的定義 數(shù)據(jù)庫(kù)的并發(fā)控制是以事務(wù)為基本單位進(jìn)行的。事務(wù)是數(shù)據(jù)庫(kù)系統(tǒng)中執(zhí)行的一個(gè)工作單位,它是由用戶定義的一組操作序列。一個(gè)事務(wù)可以是一組SQL語(yǔ)句、一條SQL命令或整個(gè)程序,一個(gè)應(yīng)用程序可以包括多個(gè)事務(wù)。 在SQL語(yǔ)言中,定義事務(wù)的語(yǔ)句有3條: BEGIN TRANSACTION COMMIT ROLLBACK,6.3 并發(fā)控制與封鎖,(2)事務(wù)的特征 事務(wù)是由有限的數(shù)據(jù)庫(kù)操作序列組成,但并不是任意的數(shù)據(jù)庫(kù)操作序列都能成為事務(wù)

51、,為了保護(hù)數(shù)據(jù)的完整性,一般要求事務(wù)具有以下4個(gè)特征: 1) 原子性(Atomic)。各事務(wù)為不可分割的工作單位,執(zhí)行時(shí)應(yīng)遵守“要么不做,要么全做”的原則,不允許事務(wù)部分完成。若意外故障而使事務(wù)未能完成,它執(zhí)行的部分結(jié)果應(yīng)被取消。 2) 一致性(Consistency)。事務(wù)對(duì)數(shù)據(jù)庫(kù)的功能是從一個(gè)一致?tīng)顟B(tài)轉(zhuǎn)變到另一個(gè)一致?tīng)顟B(tài)。所謂數(shù)據(jù)庫(kù)的一致?tīng)顟B(tài)是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)滿足完整性約束。 3) 隔離性(Isolation)。如果多個(gè)事務(wù)并發(fā)地執(zhí)行,應(yīng)像各事務(wù)獨(dú)立執(zhí)行一樣,各事務(wù)的執(zhí)行不能被其他事務(wù)干擾。并發(fā)控制可保證事務(wù)間的隔離性。 4) 持久性(Durability)。指一個(gè)事務(wù)一旦提交

52、,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是持久的,即使數(shù)據(jù)庫(kù)因故障而受到破壞,DBMS也應(yīng)該能夠恢復(fù)。 上述4個(gè)性質(zhì)的英文術(shù)語(yǔ)的第一個(gè)字母為ACID。故稱(chēng)4個(gè)性質(zhì)為事務(wù)的ACID準(zhǔn)則。,6.3 并發(fā)控制與封鎖,2并發(fā)控制概述 事務(wù)是數(shù)據(jù)庫(kù)并發(fā)控制的基本單位。保證事務(wù)ACID特性是事務(wù)處理的重要任務(wù),而并發(fā)操作有可能會(huì)破壞其ACID特性。DBMS并發(fā)控制機(jī)制有對(duì)并發(fā)操作進(jìn)行正確調(diào)度,保證事務(wù)的隔離性更強(qiáng),確保數(shù)據(jù)庫(kù)的一致性。 【案例6-18】以飛機(jī)訂票系統(tǒng)說(shuō)明并發(fā)操作帶來(lái)的數(shù)據(jù)不一致的問(wèn)題. 拿飛機(jī)訂票系統(tǒng)中的一個(gè)活動(dòng)序列(同一時(shí)刻讀?。槔?分4步: 甲售票點(diǎn)(甲事務(wù))讀取某航班的機(jī)票余額A,A=1

53、6; 乙售票點(diǎn)(乙事務(wù))讀取同一航班機(jī)票余額A,A=16; 甲售票點(diǎn)賣(mài)出一張機(jī)票,修改A=A-1,即A=15,寫(xiě)入數(shù)據(jù)庫(kù); 乙售票點(diǎn)也賣(mài)出一張機(jī)票,修改A=A-1,即A=15,寫(xiě)入數(shù)據(jù)庫(kù). 結(jié)果:賣(mài)出兩張票,數(shù)據(jù)庫(kù)中機(jī)票余額只減少1。 造成數(shù)據(jù)庫(kù)的不一致性是由并發(fā)操作引起的。在此情況下,對(duì)甲、乙事務(wù)的操作序列是隨機(jī)的。若按上面的調(diào)度序列執(zhí)行,甲事務(wù)的修改被丟失,因?yàn)榈?步中乙事務(wù)修改A并寫(xiě)回后覆蓋了甲事務(wù)的修改。,6.3 并發(fā)控制與封鎖,如果沒(méi)有鎖定且多個(gè)用戶同時(shí)訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),則當(dāng)多個(gè)事務(wù)同時(shí)使用相同數(shù)據(jù)時(shí)可能會(huì)發(fā)生問(wèn)題。并發(fā)操作帶來(lái)的數(shù)據(jù)不一致性包括: (1)丟失更新 當(dāng)多個(gè)事務(wù)選擇同

54、一行,然后基于最初選定的值更新該行時(shí),會(huì)發(fā)生丟失更新問(wèn)題。每個(gè)事務(wù)都不知道其它事務(wù)的存在。最后的更新將重寫(xiě)由其它事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。 (2)讀“臟”數(shù)據(jù)(臟讀) 讀“臟”數(shù)據(jù)是指事務(wù)T1修改某一數(shù)據(jù),并將其寫(xiě)回磁盤(pán),事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤消,而此時(shí)T1把已修改過(guò)的數(shù)據(jù)又恢復(fù)原值,T2讀到的數(shù)據(jù)與數(shù)據(jù)庫(kù)的數(shù)據(jù)不一致,則T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)。 (3)不可重復(fù)讀 當(dāng)事務(wù)T1讀取數(shù)據(jù)后,事務(wù)T2執(zhí)行更新操作,使T1無(wú)法讀取前一次結(jié)果。不可重復(fù)讀包括3種情況:事務(wù)T1讀取某一數(shù)據(jù)后,T2對(duì)其做了修改,當(dāng)T1再次讀該數(shù)據(jù)后,得到與前一不同的

55、值。,6.3 并發(fā)控制與封鎖,產(chǎn)生數(shù)據(jù)的不一致性的主要原因是并發(fā)操作破壞了事務(wù)的隔離性。其現(xiàn)象如表6-4所示。 表6-4 數(shù)據(jù)庫(kù)并發(fā)操作中3種數(shù)據(jù)不一致性現(xiàn)象,6.3 并發(fā)控制與封鎖,6.3.3 封鎖技術(shù) 并發(fā)控制措施的本質(zhì)是用正確方式調(diào)度并發(fā)操作,使一個(gè)用戶事務(wù)的執(zhí)行不受其它事務(wù)干擾,從而避免造成數(shù)據(jù)的不一致性。并發(fā)控制的主要技術(shù)是封鎖(locking).如在飛機(jī)訂票例中,甲事務(wù)要修改A,若在讀出A前先鎖住A,其它事務(wù)不能再讀取和修改A,直到甲修改并寫(xiě)回A后解除了對(duì)A的封鎖為止,這樣甲就不會(huì)丟失修改。 事務(wù)T在對(duì)某個(gè)數(shù)據(jù)對(duì)象(表、記錄等)操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖。加鎖后T

56、對(duì)數(shù)據(jù)對(duì)象有一定的控制(具體由封鎖類(lèi)型決定),在事務(wù)T釋放前,其它事務(wù)不能更新.基本的封鎖類(lèi)型有兩種: (1)排它鎖(X鎖、寫(xiě)鎖) 若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)不能對(duì)A加任何類(lèi)型的鎖,直到T釋放A上的鎖。以保證其它事務(wù)在T釋放A上的鎖前不再讀取和修改A。 (2)共享鎖(S鎖、讀鎖) T對(duì)數(shù)據(jù)對(duì)象A加上S鎖,則T可以讀A但不能修改A,其它事務(wù)只能再對(duì)A加S鎖,而不能加X(jué)鎖,直到T釋放A上的S鎖。保證了在T對(duì)A加S鎖過(guò)程中其它事務(wù)對(duì)A只能讀,不能修改。,6.3 并發(fā)控制與封鎖,6.3.4并發(fā)操作的調(diào)度 系統(tǒng)對(duì)并行操作的調(diào)度是隨機(jī)的,不同的調(diào)度可能會(huì)產(chǎn)生

57、不同結(jié)果。如果一個(gè)事務(wù)運(yùn)行中不同時(shí)運(yùn)行其他事務(wù),則可認(rèn)為該事務(wù)的運(yùn)行結(jié)果是正常的或預(yù)期的,因此將所有事務(wù)串行起來(lái)的調(diào)度策略是正確的。雖然以不同的順序串行執(zhí)行事務(wù)也可能會(huì)產(chǎn)生不同的結(jié)果,但由于不會(huì)將數(shù)據(jù)庫(kù)置于不一致?tīng)顟B(tài),所以都可認(rèn)為是正確的。由此可得結(jié)論:幾個(gè)事務(wù)的并行執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行地執(zhí)行它們的結(jié)果相同。這種并行調(diào)度策略稱(chēng)為可串行化(serializable)的調(diào)度。可串行性(serializability)是并行事務(wù)正確性的唯一準(zhǔn)則 。 【案例6-20】現(xiàn)有兩個(gè)事務(wù),分別包含下列操作: 事務(wù)1:讀B;A=B+1;寫(xiě)回A; 事務(wù)2:讀A;B=A+1;寫(xiě)回B;

58、假設(shè)A的初值為10,B的初值為2。表6-5給出了對(duì)這兩個(gè)事務(wù)的三種不同的調(diào)度策略,(a)和(b)為兩種不同的串行調(diào)度策略,雖然執(zhí)行結(jié)果不同,但他們都是正確的調(diào)度.(c)中兩個(gè)事務(wù)是交錯(cuò)執(zhí)行的,由于執(zhí)行結(jié)果與(a)(b)的結(jié)果都不同,所以是錯(cuò)誤的調(diào)度。,6.3 并發(fā)控制與封鎖,(d)中的兩個(gè)事務(wù)也是交錯(cuò)執(zhí)行的,由于執(zhí)行結(jié)果與串行調(diào)度1(a)的執(zhí)行結(jié)果相同,所以是正確的調(diào)度。 DBMS普遍采用悲觀封鎖方法,如DM和SQL Server,以保證調(diào)度的正確性,即并行操作調(diào)度的可串行性。還有時(shí)標(biāo)封鎖方法、樂(lè)觀封鎖方法等.,表6-5 對(duì)兩個(gè)事務(wù)的不同調(diào)度策略,6.4 數(shù)據(jù)備份與恢復(fù),數(shù)據(jù)備份與恢復(fù)非常重要

59、,是防止意外故障的必備措施。意外故障包括:存儲(chǔ)媒體損壞、用戶操作錯(cuò)誤、硬件故障或自然災(zāi)難等。 6.4.1 數(shù)據(jù)備份 1數(shù)據(jù)備份概述 數(shù)據(jù)備份(Data Backup)是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全系統(tǒng)或部分?jǐn)?shù)據(jù)從應(yīng)用主機(jī)中復(fù)制(轉(zhuǎn)存)到其它存儲(chǔ)介質(zhì)上的過(guò)程。其目的是為了系統(tǒng)數(shù)據(jù)崩潰時(shí)能夠快速的恢復(fù)數(shù)據(jù),使系統(tǒng)迅速恢復(fù)運(yùn)行。數(shù)據(jù)備份不僅是簡(jiǎn)單的文件復(fù)制,在多數(shù)是指數(shù)據(jù)庫(kù)備份,指制作數(shù)據(jù)庫(kù)結(jié)構(gòu)和數(shù)據(jù)的副本。備份的內(nèi)容包括:用戶和系統(tǒng)的數(shù)據(jù)庫(kù)內(nèi)容。 數(shù)據(jù)備份也是將數(shù)據(jù)庫(kù)數(shù)據(jù)復(fù)制到備份設(shè)備的過(guò)程,也常將存放于備份設(shè)備中的數(shù)據(jù)庫(kù)的拷貝稱(chēng)為原數(shù)據(jù)庫(kù)的備份或備份.常用的技術(shù)就

60、是數(shù)據(jù)備份和登記日志文件。,6.4 數(shù)據(jù)備份與恢復(fù),(1)備份 備份也稱(chēng)轉(zhuǎn)儲(chǔ)是DBA定期地將數(shù)據(jù)庫(kù)復(fù)制到儲(chǔ)存介質(zhì)的過(guò)程。其備用的數(shù)據(jù)文本稱(chēng)為后備副本或后援副本。系統(tǒng)在Ta時(shí)刻停止運(yùn)行事務(wù)進(jìn)行數(shù)據(jù)庫(kù)備份,在Tb時(shí)刻備份完畢,得到Tb時(shí)刻的數(shù)據(jù)庫(kù)一致性副本。系統(tǒng)運(yùn)行到Tf時(shí)發(fā)生故障。為恢復(fù)數(shù)據(jù)庫(kù),首先由DBA重裝數(shù)據(jù)庫(kù)后備副本,將數(shù)據(jù)庫(kù)恢復(fù)至Tb時(shí)刻的狀態(tài),然后重新運(yùn)行自Tb時(shí)刻至Tf時(shí)刻的所有更新事務(wù),就可將數(shù)據(jù)庫(kù)恢復(fù)到故障發(fā)生前的狀態(tài)。如圖所示。 備份十分耗費(fèi)時(shí)間和資源,不能頻繁進(jìn)行。按照備份狀態(tài)備份又可分為靜態(tài)備份和動(dòng)態(tài)備份。,圖6-15 數(shù)據(jù)備份和恢復(fù),6.4 數(shù)據(jù)備份與恢復(fù),(2)

61、日志文件 日志文件是用來(lái)記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作的文件。不同數(shù)據(jù)庫(kù)系統(tǒng)采用的日志文件格式并不完全一樣。主要有兩種格式:以記錄為單位的日志文件和以數(shù)據(jù)塊為單位的日志文件。 以記錄為單位的日志文件中需要登記的內(nèi)容包括: 1) 各個(gè)事務(wù)的開(kāi)始(BEGIN TRANSACTION)標(biāo)記。 2) 各個(gè)事務(wù)的結(jié)束(COMMIT或ROLL BACK)標(biāo)記。 3) 各個(gè)事務(wù)的所有更新操作。 每個(gè)事務(wù)開(kāi)始的標(biāo)記、結(jié)束標(biāo)記和每個(gè)更新操作均作為日志文件中的一個(gè)日志記錄。每個(gè)日志記錄的內(nèi)容主要包括: 1) 事務(wù)標(biāo)識(shí)(標(biāo)明是那個(gè)事務(wù))。 2) 操作的類(lèi)型(插入、刪除或修改)。 3) 操作對(duì)象(記錄內(nèi)

62、部標(biāo)識(shí))。 4) 更新前數(shù)據(jù)的舊值(對(duì)插入操作而言,此項(xiàng)為空值)。 5) 更新后數(shù)據(jù)的新值(對(duì)刪除操作而言, 此項(xiàng)為空值)。 日志文件可用來(lái)進(jìn)行事務(wù)和系統(tǒng)故障恢復(fù),并協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù).事務(wù)和系統(tǒng)故障恢復(fù)必須用日志文件。,6.4 數(shù)據(jù)備份與恢復(fù),在動(dòng)態(tài)備份方式中必須建立日志文件,后援副本和日志文件綜合起來(lái)才能有效地恢復(fù)數(shù)據(jù)庫(kù).在靜態(tài)備份方式中,也可建立日志文件.當(dāng)數(shù)據(jù)庫(kù)毀壞后可重新裝入后援副本把數(shù)據(jù)庫(kù)恢復(fù)到備份結(jié)束時(shí)刻的正確狀態(tài),然后利用日志文件,把已完成的事務(wù)進(jìn)行重做處理,對(duì)故障發(fā)生時(shí)尚未完成的事務(wù)進(jìn)行撤消處理。這樣不必重新運(yùn)行那些已完成的事務(wù)程序就可把數(shù)據(jù)庫(kù)恢復(fù)到故障前某一

63、時(shí)刻的正確狀態(tài),如圖所示。,圖6-16 利用日志文件恢復(fù),6.4 數(shù)據(jù)備份與恢復(fù),登記日志文件(logging):為保證數(shù)據(jù)庫(kù)是可恢復(fù)的,登記日志文件時(shí)必須遵循登記的次序嚴(yán)格按并發(fā)事務(wù)執(zhí)行的時(shí)間次序;必須先寫(xiě)日志文件,后寫(xiě)數(shù)據(jù)庫(kù)。 2數(shù)據(jù)備份類(lèi)型 備份也是對(duì)SQL Server數(shù)據(jù)庫(kù)事務(wù)日志進(jìn)行拷貝,數(shù)據(jù)庫(kù)備份記錄了在進(jìn)行備份操作時(shí)數(shù)據(jù)庫(kù)中所有數(shù)據(jù)的狀態(tài)。如果數(shù)據(jù)庫(kù)因意外而損壞,這些備份文件在數(shù)據(jù)庫(kù)恢復(fù)時(shí)被用來(lái)還原數(shù)據(jù)庫(kù)。數(shù)據(jù)備份的類(lèi)型有多種劃分方式,在不同情況下,應(yīng)選擇最合適的方式。 制定一個(gè)良好的備份策略,定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份是保護(hù)數(shù)據(jù)庫(kù)的一項(xiàng)重要措施。如果發(fā)生數(shù)據(jù)丟失或破壞的情況,

64、可以從數(shù)據(jù)庫(kù)備份中將數(shù)據(jù)恢復(fù)到原來(lái)的狀態(tài)。另外,除了保護(hù)數(shù)據(jù)庫(kù)安全,在制作數(shù)據(jù)庫(kù)副本和在不同服務(wù)器之間移動(dòng)數(shù)據(jù)庫(kù)時(shí)也要用到數(shù)據(jù)庫(kù)備份。,6.4 數(shù)據(jù)備份與恢復(fù),SQL Server對(duì)數(shù)據(jù)庫(kù)的備份和恢復(fù)進(jìn)行了一些改進(jìn),一些新功能支持以下備份類(lèi)型。 (1)完整備份.也曾稱(chēng)為數(shù)據(jù)庫(kù)備份是對(duì)數(shù)據(jù)庫(kù)內(nèi)的所有對(duì)象都進(jìn)行備份,包括事務(wù)日志部分(以便可恢復(fù)整個(gè)備份).適用于數(shù)據(jù)庫(kù)不是很大且不是全天運(yùn)行的應(yīng)用系統(tǒng),也不是一個(gè)變化頻繁的系統(tǒng). (2)完整差異備份.也稱(chēng)為數(shù)據(jù)庫(kù)差異備份,只備份從上次數(shù)據(jù)庫(kù)完整備份后(非上次差異備份后)數(shù)據(jù)庫(kù)變動(dòng)的部分。它基于以前的完整備份,因此,這樣完整備份稱(chēng)為“基準(zhǔn)備份”。差異備

65、份僅記錄自基準(zhǔn)備份后更改過(guò)的數(shù)據(jù)。 (3)部分備份.與完整備份相似,但部分備份并不包含所有文件組。部分備份包含主文件組、每個(gè)讀寫(xiě)文件組以及任何指定的只讀文件中的所有數(shù)據(jù)。 (4)部分差異備份.僅記錄文件組中自上次部分備份后更改的數(shù)據(jù),這樣的部分備份稱(chēng)為差異備份的“基準(zhǔn)備份”。 (5)文件和文件組備份.是針對(duì)單一數(shù)據(jù)庫(kù)文件或文件夾做備份和恢復(fù),好處是便利和具有彈性,可分別備份和還原數(shù)據(jù)庫(kù)中的文件. (6)文件差異備份.創(chuàng)建文件或文件組的完整備份后,可基于該完整備份創(chuàng)建一系列的差異備份。 (7)事務(wù)日志備份.僅用于完整恢復(fù)模式或大容量日志恢復(fù)模式.只備份數(shù)據(jù)庫(kù)的事務(wù)處理記錄。,6.4 數(shù)據(jù)備份

66、與恢復(fù),3數(shù)據(jù)庫(kù)備份方法 (1)利用SSMS管理備份設(shè)備 在備份一個(gè)數(shù)據(jù)庫(kù)前,需要先創(chuàng)建一個(gè)備份設(shè)備,如磁盤(pán)等,然后再去復(fù)制有備份的數(shù)據(jù)庫(kù)、事務(wù)日志、文件/文件組。SQLServer只支持將數(shù)據(jù)備份到本地磁盤(pán),無(wú)法將數(shù)據(jù)備份到網(wǎng)絡(luò)磁盤(pán),主要有4個(gè)操作:新建一個(gè)備份設(shè)備、使用備份設(shè)備備份數(shù)據(jù)庫(kù)、查看備份設(shè)備、刪除備份設(shè)備。 (2)備份數(shù)據(jù)庫(kù) 打開(kāi)SSMS,右擊需要備份的數(shù)據(jù)庫(kù),選擇“任務(wù)”中的“備份”命令,出現(xiàn)備份數(shù)據(jù)庫(kù)窗口,可選擇要備份的數(shù)據(jù)庫(kù)和備份類(lèi)型。 (3)數(shù)據(jù)庫(kù)的差異備份 只記錄自上次數(shù)據(jù)庫(kù)備份后發(fā)生更改的數(shù)據(jù)。此備份比數(shù)據(jù)庫(kù)備份小且速度快,因此可經(jīng)常地備份,以減少丟失數(shù)據(jù)的危險(xiǎn)。使用此備份將數(shù)據(jù)庫(kù)還原到差異數(shù)據(jù)庫(kù)備份完成時(shí)那一點(diǎn)。若要恢復(fù)到精確的故障點(diǎn),必須使用事務(wù)日志備份。,6.4 數(shù)據(jù)備份與恢復(fù),6.4.2 數(shù)據(jù)恢復(fù) 數(shù)據(jù)恢復(fù)(Data Restore)是指將備份到存儲(chǔ)介質(zhì)上的數(shù)據(jù)再恢復(fù)(還原)到計(jì)算機(jī)系統(tǒng)中,它與數(shù)據(jù)備份是一個(gè)逆過(guò)程,包括整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的恢復(fù)。由于數(shù)據(jù)恢復(fù)直接關(guān)系到系統(tǒng)在經(jīng)過(guò)故障后能否迅速恢復(fù)正常運(yùn)行,所以,數(shù)據(jù)恢復(fù)在整個(gè)數(shù)據(jù)安全保護(hù)極為重要。

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!