※第8章-數(shù)據(jù)庫(kù)管理技術(shù)_第1頁(yè)
※第8章-數(shù)據(jù)庫(kù)管理技術(shù)_第2頁(yè)
※第8章-數(shù)據(jù)庫(kù)管理技術(shù)_第3頁(yè)
※第8章-數(shù)據(jù)庫(kù)管理技術(shù)_第4頁(yè)
※第8章-數(shù)據(jù)庫(kù)管理技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)的平安性內(nèi)容提要SQLServer的平安性機(jī)制SQLServer效勞器的登錄平安性數(shù)據(jù)庫(kù)的使用平安性數(shù)據(jù)庫(kù)對(duì)象的使用平安性SQLServer的平安性機(jī)制SQLServer的平安機(jī)制為4個(gè)等級(jí):操作系統(tǒng)的平安性;SQLServer效勞器的登錄平安性;數(shù)據(jù)庫(kù)的使用平安性;數(shù)據(jù)庫(kù)對(duì)象的使用平安性SQLServer的平安性機(jī)制一、操作系統(tǒng)的平安性在用戶使用客戶計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)SQLServer效勞器的訪問(wèn)時(shí),用戶首先要獲得客戶計(jì)算機(jī)操作系統(tǒng)的使用權(quán)。操作系統(tǒng)平安性是操作系統(tǒng)管理員或者網(wǎng)絡(luò)管理員的任務(wù)。由于SQLServer采用了集成WindowsNT網(wǎng)絡(luò)平安性的機(jī)制,所以使得操作系統(tǒng)平安性的地位得到提高,但同時(shí)也加大了管理數(shù)據(jù)庫(kù)系統(tǒng)平安性和靈活性的難度。具體而言,有客戶端計(jì)算機(jī)操作權(quán)限.SQLServer的平安性機(jī)制二、SQLSERVER效勞器的平安性SQLServer效勞器的平安性建立在控制效勞器登錄賬號(hào)和密碼。SQLServer采用了標(biāo)準(zhǔn)SQLServer登錄和集成WindowsNT登錄兩種方式。管理和設(shè)計(jì)合理的登錄方式是SQLServerDBA的重要任務(wù),是SQLServer平安體系中,DBA可以發(fā)揮主動(dòng)性的第一道防線。SQLServer事先設(shè)計(jì)了許多固定效勞器的角色,用來(lái)為具有效勞器管理員資格的用戶分配使用權(quán)利。擁有固定效勞器角色的用戶可以擁有效勞器級(jí)的管理權(quán)限。注意:●SQLServer在效勞器和數(shù)據(jù)庫(kù)級(jí)的平安級(jí)別上都設(shè)置了角色。角色是用戶分配權(quán)限的單位。SQLServer允許用戶在數(shù)據(jù)庫(kù)級(jí)上建立新的角色,然后為角色賦予多個(gè)權(quán)限,然后在通過(guò)角色將權(quán)限賦予給SQLServer的用戶。●SQLServer不允許用戶建立效勞器級(jí)的角色。SQLServer的平安性機(jī)制三、數(shù)據(jù)庫(kù)的平安性在用戶通過(guò)SQLServer效勞器的平安性檢驗(yàn)以后,將直接面對(duì)不同的數(shù)據(jù)庫(kù)入口。這是用戶將接受的第三次平安性檢驗(yàn).在建立用戶的登錄賬號(hào)信息時(shí),SQLServer會(huì)提示用戶選擇默認(rèn)的數(shù)據(jù)庫(kù)。以后用戶每次連接上效勞器后,都會(huì)自動(dòng)轉(zhuǎn)到默認(rèn)的數(shù)據(jù)庫(kù)上。對(duì)任何用戶來(lái)說(shuō),master數(shù)據(jù)庫(kù)的門總是翻開的,如果在設(shè)置登錄賬號(hào)時(shí)沒(méi)有指定默認(rèn)的數(shù)據(jù)庫(kù),那么用戶的權(quán)限將局限在master數(shù)據(jù)庫(kù)以內(nèi)。默認(rèn)的情況下,數(shù)據(jù)庫(kù)的擁有者可以訪問(wèn)該數(shù)據(jù)庫(kù)的對(duì)象,可以分配訪問(wèn)權(quán)給別的用戶,以便讓別的用戶也擁有針對(duì)該數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)利,在SQLServer中并不是所有的權(quán)利都可以自由轉(zhuǎn)讓和分配。SQLServer的平安性機(jī)制四、SQLSERVER數(shù)據(jù)庫(kù)對(duì)象的平安性數(shù)據(jù)庫(kù)對(duì)象的平安性是核查用戶權(quán)限的最后一個(gè)平安等級(jí)。在創(chuàng)立數(shù)據(jù)庫(kù)對(duì)象的時(shí)候,SQLServer將自動(dòng)把該數(shù)據(jù)庫(kù)對(duì)象的擁有權(quán)賦予該對(duì)象的創(chuàng)立者。對(duì)象的擁有者可以實(shí)現(xiàn)該對(duì)象的完全控制。默認(rèn)情況下,只有數(shù)據(jù)庫(kù)的擁有者可以在該數(shù)據(jù)庫(kù)下進(jìn)行操作。當(dāng)一個(gè)非數(shù)據(jù)庫(kù)擁有者想訪問(wèn)數(shù)據(jù)庫(kù)里的對(duì)象時(shí),必須事先由數(shù)據(jù)庫(kù)的擁有者賦予該用戶對(duì)指定對(duì)象的執(zhí)行特定操作的權(quán)限。例如:一個(gè)用戶想訪問(wèn)MyDb數(shù)據(jù)庫(kù)里DAB表中的信息,那么他必須在首先成為數(shù)據(jù)庫(kù)合法用戶的前提下,獲得由MyDb數(shù)據(jù)庫(kù)擁有者分配的針對(duì)DAB表的訪問(wèn)權(quán)限。

SQLSERVER效勞器平安性SQLSERVER效勞器的登錄方式有兩種:標(biāo)準(zhǔn)登錄模式(SQLServer身份認(rèn)證〕集成登錄模式(Windows身份認(rèn)證)第一節(jié)標(biāo)準(zhǔn)登錄模式

概述SQLSERVER效勞器平安性在系統(tǒng)安裝時(shí)有個(gè)選擇“集成登錄模式”或“混合模式〔即標(biāo)準(zhǔn)登錄模式〕”。采用SQLServer提供的標(biāo)準(zhǔn)登錄模式實(shí)現(xiàn)SQLServer效勞器的登錄連接,用戶必須擁有合法的賬號(hào)和正確的密碼。用戶可以通過(guò)企業(yè)管理器或通過(guò)系統(tǒng)提供的存儲(chǔ)過(guò)程來(lái)進(jìn)行登錄賬戶的創(chuàng)立。更簡(jiǎn)單的創(chuàng)立方法是使用SQLServer提供的CreateLoginWizard。下面將以命令方式為主介紹。第一節(jié)標(biāo)準(zhǔn)登錄模式

概述SQLSERVER效勞器平安性一、登錄用戶的創(chuàng)立創(chuàng)立登錄用戶的語(yǔ)法是:sp_addlogin[loginame=]‘login’[,[@passwd=]’password’][,[@defdb=]‘database’][,[@deflanguage=]‘language’][,[@sid=]‘sid’][,[@encryptOpt=]‘encryption_option’]說(shuō)明:1

參數(shù)說(shuō)明:@loginame:登錄賬戶名,在同一個(gè)效勞器上用戶的賬戶名必須惟一。@passwd:賬戶的密碼。

第一節(jié)標(biāo)準(zhǔn)登錄模式

SQLSERVER效勞器平安性一、登錄用戶的創(chuàng)立@defdb:新建立賬戶的默認(rèn)數(shù)據(jù)庫(kù),如果不設(shè)置此參數(shù)那么默認(rèn)值為master數(shù)據(jù)庫(kù)。@deflanguage:默認(rèn)的語(yǔ)言。@sid:用戶惟一標(biāo)識(shí)符。用戶的惟一標(biāo)識(shí)符是一個(gè)varbinary(16)的變量,默認(rèn)值為NULL。如果用戶不設(shè)置或設(shè)置用戶惟一標(biāo)識(shí)符為NULL,那么SQLServer效勞器會(huì)自動(dòng)為新建立的賬戶設(shè)置一個(gè)從未使用過(guò)的非NULL的惟一標(biāo)識(shí)符。@encryptopt:選擇是否對(duì)存儲(chǔ)在系統(tǒng)表里的密碼進(jìn)行加密,這是一個(gè)類型為varchar(20)的變量,取值范圍是:NULL:默認(rèn)選項(xiàng),將對(duì)密碼進(jìn)行加密。skip_encryption:不對(duì)密碼進(jìn)行加密。skip_encryption_old:不對(duì)密碼進(jìn)行加密。提供的密碼已經(jīng)使用較早版本的SQLServer進(jìn)行加密。第一節(jié)標(biāo)準(zhǔn)登錄模式

SQLSERVER效勞器平安性一、登錄用戶的創(chuàng)立lSQLServer的登錄賬戶、用戶、角色以及密碼不允許包含(\),不許為NULL,不許為空字符串。例創(chuàng)立了一個(gè)登錄賬戶:EXECsp_addlogin'AA‘,'123‘,'MYDB'解釋:創(chuàng)立了一個(gè)名叫AA,密碼是123,默認(rèn)數(shù)據(jù)庫(kù)為MYDB的賬戶。查看帳戶信息:SELECT*FROMSySloginsWHEREname='AA'第一節(jié)標(biāo)準(zhǔn)登錄模式

SQLSERVER效勞器平安性二、修改和刪除帳戶建立好的賬戶信息,用戶可以使用系統(tǒng)存儲(chǔ)過(guò)程進(jìn)行修改。1.sp_defaultdb

修改登錄賬戶的默認(rèn)數(shù)據(jù)庫(kù)EXECsp_defaultdb‘AA’,’master’2.sp_defaultlanguage

修改登錄賬戶的默認(rèn)語(yǔ)言EXECsp_defaultlanguage‘AA’,’French’3.sp_password

修改SQLServer的賬戶密碼語(yǔ)法格式:sp_password'OLD_PASSWORD','NEW_PASSWORD','LOGINNAME'例如:EXECsp_password'123','1','AA'G0第一節(jié)標(biāo)準(zhǔn)登錄模式

SQLSERVER效勞器平安性二、修改和刪除帳戶4.sp_droplogin刪除SQLServer標(biāo)準(zhǔn)登錄賬戶例如:EXECsp_droploginAA

說(shuō)明:不能刪除映射到任何數(shù)據(jù)庫(kù)中現(xiàn)有用戶的登錄。必須首先使用sp_dropuser

刪除該用戶不能刪除系統(tǒng)管理員(sa)登錄。不能刪除擁有現(xiàn)有數(shù)據(jù)庫(kù)的登錄。不能刪除在msdb

數(shù)據(jù)庫(kù)中擁有作業(yè)的登錄。不能刪除當(dāng)前正在使用并且被連接到SQLServer的登錄。

第一節(jié)標(biāo)準(zhǔn)登錄模式

SQLSERVER效勞器平安性三、特殊賬戶sa說(shuō)明:sa賬戶擁有效勞器和所有的系統(tǒng)數(shù)據(jù)庫(kù)(當(dāng)然也包括所有由SQLServer賬戶創(chuàng)立的數(shù)據(jù)庫(kù))。sa擁有最高的管理權(quán)限,可以執(zhí)行效勞器范圍內(nèi)的所有操作。sa用戶不能被刪除。第一節(jié)標(biāo)準(zhǔn)登錄模式

SQLSERVER效勞器平安性SQLServer集成登錄,

是指將WindowsNT的用戶和工作組映射為SQLServer的登錄賬戶。

第二節(jié)集成登錄模式

SQLServer集成登錄模式

SQLSERVER效勞器平安性一、sp_grantlogin添加WindowNT的用戶或工作組帳戶

語(yǔ)法:sp_grantlogin[@loginame=]'login'例如:sp_grantlogin[ntserver0\zhutao]說(shuō)明:映射工作組或用戶的前提條件是該工作組或用戶必須存在于WindowsNT效勞器上。當(dāng)用戶將工作組設(shè)置為SQLServer的賬戶以后,所有工作組的成員都可以使用這個(gè)賬戶實(shí)現(xiàn)針對(duì)SQLServer的連接。所有工作組的成員都將享有該賬戶的所有權(quán)限。在給出工作組或用戶名時(shí),必須指定用戶或工作組所在的域,并使用定界符將域和用戶括起來(lái)。第二節(jié)集成登錄模式

SQLSERVER效勞器平安性二、sp_denylogin功能:不允許WindowsNT的工作組或用戶連接SQLServer效勞器。語(yǔ)法:sp_denylogin[@loginame=]'login'例如:EXECsp_denylogin[ntserver0\zhutao]第二節(jié)集成登錄模式

SQLSERVER效勞器平安性三、sp_revokelogin

撒消WindowsNT的工作組或用戶與SQLServer賬戶的映射。例如:EXECsp_revokelogin[NTSERVER0\zhutao]說(shuō)明:如果一個(gè)WindowsNT的用戶名叫NTSERVER2\STUD1,同時(shí)也是NTSERVER2\STUD的成員。如果使用了EXECsp_revokelogin[NTSERVER2\STUD1],但NTSERVER2\STUD與SQLServer賬戶的映射關(guān)系依然存在而且可以連接,那么NTSERVER2\STUD1依然可以連接上SQLServer效勞器。但是,如果使用了EXECsp_denylogin[NTSERVER2\STUD1],雖然NTSERVER2\STUD與SQLServer賬戶的映射關(guān)系依然存在而且可以連接,但是該用戶將無(wú)法再連接上SQLServer效勞器第二節(jié)集成登錄模式

SQLServer2005新命令1.創(chuàng)立登錄名可以使用CREATELOGIN命令。語(yǔ)法格式:CREATELOGINlogin_name{WITHPASSWORD='password'[HASHED][MUST_CHANGE] [,<option_list>[,...]] /*WITH子句用于創(chuàng)立SQLServer登錄名*/|FROM /*FROM子句用戶創(chuàng)立其他登錄名*/ { ?WINDOWS[WITH<windows_options>[,...]]|CERTIFICATEcertname|ASYMMETRICKEYasym_key_name }}SQLServer2005新命令【例1】使用命令方式創(chuàng)立Windows登錄名tao〔假設(shè)Windows用戶tao已經(jīng)創(chuàng)立,本地計(jì)算機(jī)名為ntserver0〕,默認(rèn)數(shù)據(jù)庫(kù)設(shè)為PXSCJ。USEmasterGOCREATELOGIN[0BD7E57C949A420\tao] FROMWINDOWS WITHDEFAULT_DATABASE=PXSCJ【例2】創(chuàng)立SQLServer登錄名sql_tao,密碼為123456,默認(rèn)數(shù)據(jù)庫(kù)設(shè)為PXSCJ。CREATELOGINsql_tao WITHPASSWORD='123456', DEFAULT_DATABASE=PXSCJSQLServer2005新命令2.刪除登錄名刪除登錄名使用DROPLOGIN命令。語(yǔ)法格式:DROPLOGINlogin_namelogin_name為要?jiǎng)h除的登錄名?!纠?.3】刪除Windows登錄名tao。DROPLOGIN[0BD7E57C949A420\tao]【例9.4】刪除SQLServer登錄名sql_tao。DROPLOGINsql_tao

SQLServer數(shù)據(jù)庫(kù)的平安性在實(shí)現(xiàn)數(shù)據(jù)庫(kù)的平安登錄以后,檢驗(yàn)用戶權(quán)限的下一個(gè)平安等級(jí)就是數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)。數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)實(shí)現(xiàn)是通過(guò)映射數(shù)據(jù)庫(kù)的用戶與登錄賬戶之間的關(guān)系來(lái)實(shí)現(xiàn)。數(shù)據(jù)庫(kù)的用戶是數(shù)據(jù)庫(kù)級(jí)的平安實(shí)體,就像登錄賬戶是效勞器級(jí)的平安實(shí)體一樣。數(shù)據(jù)庫(kù)的平安性概述

SQLServer數(shù)據(jù)庫(kù)的平安性一、sp_grantdbaccess添加數(shù)據(jù)庫(kù)用戶語(yǔ)法:sp_grantdbaccess[@loginame=]‘login’[,[@name_in_db=]’name_in_db’]說(shuō)明:1、語(yǔ)法說(shuō)明:@loginame:是SQLServer的登錄賬戶名稱,賬戶名稱可以是SQLServer標(biāo)準(zhǔn)登錄的帳戶名,也可以是WindowsNT集成模式下的WindowsNT工作組名或WindowsNT用戶名。@name_in_db:該賬戶在該數(shù)據(jù)庫(kù)下的用戶名,如果不指定@name_in_db,那么默認(rèn)使用登錄賬戶名稱來(lái)代替。將待設(shè)置的數(shù)據(jù)庫(kù)選為當(dāng)前數(shù)據(jù),執(zhí)行該命令即可。

SQLServer數(shù)據(jù)庫(kù)的平安性一、sp_grantdbaccess添加數(shù)據(jù)庫(kù)用戶例如:建立一個(gè)SQLServer的標(biāo)準(zhǔn)登錄賬戶,然后將該賬戶添加為NorthWind數(shù)據(jù)庫(kù)的用戶。EXECsp_addlogin‘AA’,’123’,’pubs’G0USENorthWindG0EXECsp_grantdbaccess‘AA’G0EXECsp_grantdbaccess[NTSERVER2\STUD],’STUD’GO2、所有有關(guān)數(shù)據(jù)庫(kù)級(jí)權(quán)限的設(shè)置都只有被分配了db_accessadmin或db_owner固定效勞器角色的用戶可以執(zhí)行。

SQLServer數(shù)據(jù)庫(kù)的平安性二、sp_revokedbaccess刪除數(shù)據(jù)庫(kù)用戶功能:斷開SQLServer的登錄賬戶與數(shù)據(jù)庫(kù)用戶之間的對(duì)應(yīng)關(guān)系語(yǔ)法:sp_revokedbaccess[@name_in_db=]'name'例如:斷開了賬戶AA與MyDb數(shù)據(jù)庫(kù)之間的對(duì)應(yīng)關(guān)系:USEMyDbG0EXECsp_revokedbaccess[AA]GO系統(tǒng)返回信息:Userhasbeendroppedfromcurrentdatabase.

SQLServer數(shù)據(jù)庫(kù)的平安性三、特殊數(shù)據(jù)庫(kù)用戶SQLServer的數(shù)據(jù)庫(kù)級(jí)別上也存在著兩個(gè)特殊的數(shù)據(jù)庫(kù)用戶。這兩個(gè)用戶分別是dbo和guest。1.dbodbo是數(shù)據(jù)庫(kù)的擁有者,安裝SQLServer時(shí)已存在,而且不能被刪除,dbo在每個(gè)數(shù)據(jù)庫(kù)中都存在。dbo是數(shù)據(jù)庫(kù)的最高權(quán)利擁有者,可以在數(shù)據(jù)庫(kù)范圍內(nèi)執(zhí)行一切操作。Dbo永遠(yuǎn)無(wú)法從數(shù)據(jù)庫(kù)中刪除并且它的用戶ID(uid)總是為1。dbo用戶對(duì)應(yīng)于創(chuàng)立該數(shù)據(jù)庫(kù)的登錄賬戶,所有系統(tǒng)數(shù)據(jù)庫(kù)的dbo都對(duì)應(yīng)于sa賬戶。

SQLServer數(shù)據(jù)庫(kù)的平安性三、特殊數(shù)據(jù)庫(kù)用戶2.guestguest用戶可以使任何已經(jīng)登錄到SQLServer效勞器的用戶都可以訪問(wèn)數(shù)據(jù)庫(kù)。所有的系統(tǒng)數(shù)據(jù)庫(kù)除model以外都有g(shù)uest用戶。所有新建的數(shù)據(jù)庫(kù)都沒(méi)有這個(gè)用戶,如果有必要添加guest用戶,那么必須使用sp_grantdbaccess明確的建立這個(gè)用戶。例如:USEMyDBEXECsp_grantdbaccessguestG0為MyDB數(shù)據(jù)庫(kù)添加了guest用戶。guest用戶的存在意味著所有登錄到SQLServer效勞器的用戶都可以訪問(wèn)數(shù)據(jù)庫(kù),即使它還沒(méi)有成為本數(shù)據(jù)庫(kù)的用戶。在model數(shù)據(jù)庫(kù)中添加用戶guest,然后創(chuàng)立一個(gè)新的數(shù)據(jù)庫(kù),觀察新數(shù)據(jù)庫(kù)中的用戶情況。

SQLServer數(shù)據(jù)庫(kù)的平安性四、SQLSERVER2005新增命令(1)創(chuàng)立數(shù)據(jù)庫(kù)用戶創(chuàng)立數(shù)據(jù)庫(kù)用戶使用CREATEUSER命令。語(yǔ)法格式:CREATEUSERuser_name

[{FOR|FROM}{LOGINlogin_name|CERTIFICATEcert_name|ASYMMETRICKEYasym_key_name}|WITHOUTLOGIN]

[WITHDEFAULT_SCHEMA=schema_name]【例】創(chuàng)立數(shù)據(jù)庫(kù)用戶名CREATEUSERZHUFORLOGINZHUWITHDEFALUT_SCHEMA=dbo

SQLServer數(shù)據(jù)庫(kù)的平安性四、SQLSERVER2005新增命令(2)刪除數(shù)據(jù)庫(kù)用戶刪除數(shù)據(jù)庫(kù)用戶使用DROPUSER語(yǔ)句。語(yǔ)法格式:DROPUSERuser_nameuser_name為要?jiǎng)h除的數(shù)據(jù)庫(kù)用戶名,在刪除之前要使用USE語(yǔ)句指定數(shù)據(jù)庫(kù)?!纠縿h除PXSCJ數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)用戶tao。USEPXSCJGODROPUSERtao

角色〔用戶組〕角色是SQLServer2000引進(jìn)的用來(lái)集中管理數(shù)據(jù)庫(kù)或效勞器權(quán)限的概念。數(shù)據(jù)庫(kù)管理員將操作數(shù)據(jù)庫(kù)的權(quán)限賦予角色,然后,數(shù)據(jù)庫(kù)管理員可以將角色再賦給數(shù)據(jù)庫(kù)用戶或登錄賬戶,從而使數(shù)據(jù)庫(kù)用戶或登錄賬戶擁有了相應(yīng)的權(quán)限。SQLServer提供了兩級(jí)角色:l

固定效勞器角色l

數(shù)據(jù)庫(kù)級(jí)角色用戶角色概述

角色〔用戶組〕固定效勞器角色是SQLServer在安裝時(shí)就創(chuàng)立好的用于分配效勞器級(jí)管理權(quán)限的實(shí)體。效勞器角色不能修改,只能將登陸帳戶指定為某效勞器角色。第一節(jié)固定效勞器角色固定效勞器角色

角色〔用戶組〕一、sp_helpsrvrole功能:瀏覽固定效勞器角色的內(nèi)容(8種)第一節(jié)固定效勞器角色二、sp_addsrvrolemember功能:將某固定效勞器角色分配給某指定的登錄賬戶。例如:EXECsp_addsrvrolemember[AA],'sysadmin'G0固定效勞器角色管理

角色〔用戶組〕三、sp_dropsrvrolemember功能:是收回分配給某登錄賬戶的指定固定效勞器角色。例如:sp_dropsrvrolemember[NTSERVER\SUPER],'sysadmin'GO說(shuō)明:l

sysadmin:在SQLServer的固定效勞器中sysadmin擁有最高的權(quán)限,可以執(zhí)行效勞器范圍內(nèi)的一切操作。lServeradmin:可以在效勞器范圍內(nèi)執(zhí)行所有的配置操作,可以啟動(dòng)和關(guān)閉效勞器。lSecurityadmin可以在效勞器范圍內(nèi)進(jìn)行有關(guān)權(quán)限的一切管理操作,如管理登錄賬戶、管理數(shù)據(jù)庫(kù)對(duì)象權(quán)限、閱讀日志文件等。lDbcreator可以創(chuàng)立和修改數(shù)據(jù)庫(kù)。第一節(jié)固定效勞器角色

角色〔用戶組〕四、sp_srvrolepermission功能:瀏覽固定效勞器角色的權(quán)限。例如:EXECsp_srvrolepermissionsysadminG0第一節(jié)固定效勞器角色

角色〔用戶組〕一、sp_helpdbfixedrole功能:瀏覽所有的固定數(shù)據(jù)庫(kù)角色的相關(guān)內(nèi)容。例如:Execsp_helpdbfixedroleG0第二節(jié)固定數(shù)據(jù)庫(kù)角色固定數(shù)據(jù)庫(kù)管理

角色〔用戶組〕二、sp_addrolemember將某個(gè)固定數(shù)據(jù)庫(kù)角色,從而使該賬戶擁有指定固定數(shù)據(jù)庫(kù)角色所擁有的所有權(quán)限。USEMYDBG0EXECsp_addrolememberdb_owner,AAG0

第二節(jié)固定數(shù)據(jù)庫(kù)角色

角色〔用戶組〕三、sp_droprolemember從某個(gè)固定數(shù)據(jù)庫(kù)角色中刪除指定的登錄賬戶,從而回收分配給該登錄賬戶的權(quán)限。例如:

USEMYDBG0EXECsp_droprolememberdb_owner,AAG0

第二節(jié)固定數(shù)據(jù)庫(kù)角色

角色〔用戶組〕四、特殊角色publicpublic的特點(diǎn)是:●替數(shù)據(jù)庫(kù)用戶捕獲所有的數(shù)據(jù)庫(kù)默認(rèn)權(quán)限?!癫荒軐ublic角色分配給任何用戶、工作組,因?yàn)樗械挠脩舳寄J(rèn)為屬于該角色。●public角色存在于每一個(gè)數(shù)據(jù)庫(kù)中,包括系統(tǒng)數(shù)據(jù)庫(kù)和用戶建立的數(shù)據(jù)庫(kù)?!癫辉试S被刪除。說(shuō)明:用戶無(wú)法修改固定數(shù)據(jù)庫(kù)角色所擁有的權(quán)限。在所有數(shù)據(jù)庫(kù)用戶中,特殊用戶dbo具有最高的管理權(quán)限,它被認(rèn)為是所有數(shù)據(jù)庫(kù)對(duì)象的擁有者,可以訪問(wèn)所有的數(shù)據(jù)庫(kù)對(duì)象,可以在數(shù)據(jù)庫(kù)范圍內(nèi)執(zhí)行一切操作。在固定效勞器角色和dbo之間有著一種奇特的對(duì)應(yīng)關(guān)系。第二節(jié)固定數(shù)據(jù)庫(kù)角色

角色〔用戶組〕四、特殊角色public任何被賦予sysadmin固定效勞器角色的用戶都映射著每個(gè)數(shù)據(jù)庫(kù)的特殊用戶dbo。所有由sysadmin成員創(chuàng)立的數(shù)據(jù)庫(kù)對(duì)象都自動(dòng)將擁有者設(shè)置為dbo。例如:如果用戶AA是一個(gè)sysadmin固定效勞器角色成員,而且在MYDB數(shù)據(jù)庫(kù)里創(chuàng)立了一個(gè)表名叫T1,那么表T1屬于MYDB數(shù)據(jù)庫(kù)的用戶dbo,應(yīng)該表示為dbo.T,而不是zhu.T1。相反,如果AA不是一個(gè)sysadmin固定效勞器角色成員;而是一個(gè)db_owner固定數(shù)據(jù)庫(kù)角色成員,那么由AA創(chuàng)立的表格T1屬于AA,應(yīng)該表示為AA.T1。第二節(jié)固定數(shù)據(jù)庫(kù)角色

角色〔用戶組〕一、sp_addrole語(yǔ)法:sp_addrole[@rolename=]'role'[,[@ownername=]'owner‘]說(shuō)明:@rolename:數(shù)據(jù)庫(kù)角色的名字。@ownername:該角色擁有者的名字,默認(rèn)為dbo。Owner必須是當(dāng)前數(shù)據(jù)庫(kù)里的用戶或角色。

第三節(jié)自定義數(shù)據(jù)庫(kù)角色

自定義數(shù)據(jù)庫(kù)角色管理

角色〔用戶組〕一、sp_addrole例如:USEMydbG0EXECsp_addrole'My'G0提示:只能在數(shù)據(jù)庫(kù)級(jí)建立角色,不能在效勞器級(jí)建立角色。當(dāng)完成角色的建立操作以后,該角色不擁有任何權(quán)限。如果要對(duì)權(quán)限進(jìn)行修改可以使用將在下一節(jié)介紹的GRANT、REVOKE等語(yǔ)句來(lái)進(jìn)行。也可以通過(guò)企業(yè)管理器來(lái)進(jìn)行。第三節(jié)自定義數(shù)據(jù)庫(kù)角色

角色〔用戶組〕二、sp_droprole功能:刪除指定的數(shù)據(jù)庫(kù)角色USEMyDbG0EXECsp_droprole‘MY’

G0注意:刪除數(shù)據(jù)庫(kù)角色有許多限制,只有用戶建立的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)角色可以被刪除,固定數(shù)據(jù)庫(kù)角色和public角色無(wú)法被刪除。當(dāng)該數(shù)據(jù)庫(kù)角色上有用戶存在時(shí),必須首先使用sp_droprolemember刪除用戶,再刪除指定的數(shù)據(jù)庫(kù)角色。

第三節(jié)自定義數(shù)據(jù)庫(kù)角色

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

1.對(duì)象權(quán)限(objectpermission)處理數(shù)據(jù)或執(zhí)行過(guò)程的權(quán)限授予。這種權(quán)限被稱為對(duì)象權(quán)限。對(duì)象權(quán)限包括:SELECT、INSERT、UPDATE和DELETE語(yǔ)句權(quán)限,它們可以應(yīng)用到整個(gè)表或視圖中。SELECT和UPDATE語(yǔ)句權(quán)限,它們可以有選擇性地應(yīng)用到表或視圖中的單個(gè)列上。SELECT權(quán)限,它們可以應(yīng)用到用戶定義函數(shù)。INSERT和DELETE語(yǔ)句權(quán)限,它們會(huì)影響整行,因此只可以應(yīng)用到表或視圖中,而不能應(yīng)用到單個(gè)列上。EXECUTE語(yǔ)句權(quán)限,它們可以影響存儲(chǔ)過(guò)程和函數(shù)。

第一節(jié)權(quán)限概述

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

2.命令權(quán)限(objectpermission)數(shù)據(jù)庫(kù)擁有者授予執(zhí)行某些SQL命令的權(quán)限。這種權(quán)限在SQLServer中被稱為命令權(quán)限。語(yǔ)句權(quán)限包括: BACKUPDATABASE BACKUPLOG CREATEDATABASE CREATEDEFAULT CREATEFUNCTION CREATEPROCEDURE CREATERULE CREATETABLE CREATEVIEW

第一節(jié)權(quán)限概述

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

授予對(duì)象權(quán)限的語(yǔ)法:GRANT{ALL[PRIVILEGES]|permission[,...n]}{[(column[,...n])]0N{table|View}|ON{table|view}[(column[,...n])]|ON{stored_Procedure})TOsecurity_account[,...n][WITHGRANTOPTION]授予命令權(quán)限的語(yǔ)法:GRANT{ALL|statement[,...n])TOsecurity_account[,...n]

第二節(jié)授予權(quán)限

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

說(shuō)明:ALL:表示授予所有可以應(yīng)用的權(quán)限。Statement:表示可以授予權(quán)限的命令,這些命令包括:

CREATEDATABASECREATEDEFAULTCREATEPROCEDURE,

CREATEFUNCTIONCREATERULE’CREATETABLECREATEVIEWBACKUPDATABASEBACKUPLOGpermission:表示在對(duì)象上執(zhí)行某些操作的權(quán)限。

第二節(jié)授予權(quán)限

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

說(shuō)明:Column:在表或視圖上允許用戶將權(quán)限局限到某些列上,column表示列的名字。WITHGRANTOPTION:定義是否給用戶以授予該權(quán)限給別的用戶的權(quán)利。security_account:定義被授予權(quán)限的用戶單位。security_account可以是SQLServer的數(shù)據(jù)庫(kù)用戶,可以是SQLServer的角色,也可以是WindowsNT的用戶或工作組。

第二節(jié)授予權(quán)限

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

例如1:USEMyDbG0----------------------------GRANTSELECTONDabT0publicG0--所有DAB的用戶都具有查詢的權(quán)限。------------------------------GRANTINSERT,UPDATE,DELETE0NDABT0AA,SUPERG0--將對(duì)dab的操作賦予AASUPER用戶。

第二節(jié)授予權(quán)限

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

例如2:USEMyDBG0GRANTCREATEVIEW,CREATETABLET0AA,BBG0--將創(chuàng)立視圖和表的權(quán)限賦予AA和BB

第二節(jié)授予權(quán)限

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

l

撤消對(duì)象權(quán)限的語(yǔ)法:REVOKE{ALL[PRIVILEGES]|permission[,...n]){[(Column[,...n])]0N{table|View)|ON{table|View)[(Column[,...n])]|{Stored_procedure)}{T0|FROM)security_account[,...n][CASCADE]l

撤消命令權(quán)限的語(yǔ)法:REVOKE{ALL|statement[,...n])FROMsecurity_account[,...n]

第三節(jié)撤消權(quán)限

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

說(shuō)明:l

CASCADE:應(yīng)用在授予權(quán)限時(shí)使用了WITHGRANTOPTION的情況。如果該用戶將被授予的權(quán)限又授予了其他的用戶,那么使用CASCADE關(guān)鍵字,將撤消所有這些已經(jīng)授予的權(quán)限。l

其他同上。例如:USEMyDbGOREVOKECREATETABLE,CREATEVIEWFROMAA,BBG0從登錄賬戶AA、BB撤消了創(chuàng)立表和視圖的權(quán)利。

第三節(jié)撤消權(quán)限

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

在授予了用戶對(duì)象權(quán)限后,數(shù)據(jù)庫(kù)管理員可以根據(jù)情況在不撤消用戶訪問(wèn)權(quán)限的情況下,拒絕用戶訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象。被授予對(duì)象權(quán)限的用戶的拒絕訪問(wèn)語(yǔ)法:

DENY{ALL[PRIVILEGES]|permission[,...n]){[(column[,...n])]ON{table|view}|ON{table|view}[(column[,...n])]|ON{stored_procedure|extended_procedure}T0Security_account[,...n][CASCADE]

被授予命令權(quán)限的用戶拒絕訪問(wèn)的語(yǔ)法:DENY{ALL|Statement[,...n])T0Security_account[,...n]

第三節(jié)拒絕訪問(wèn)

數(shù)據(jù)庫(kù)對(duì)象的權(quán)限

注意:如果使用了DENY命令拒絕某用戶獲得某項(xiàng)權(quán)限,即使該用戶后來(lái)又參加了具有該項(xiàng)權(quán)限的某工作組或角色,那么該用戶將依然無(wú)法使用該項(xiàng)權(quán)限。例如:USEMyDbG0GRANTSELECT0NDABTOpublicG0DENYSELECT,INSERT,UPDATE,DELETE0NDABT0AA,BBG0

第三節(jié)拒絕訪問(wèn)

數(shù)據(jù)的完整性內(nèi)容提要數(shù)據(jù)完整性的分類使用約束實(shí)現(xiàn)數(shù)據(jù)的完整性使用規(guī)那么使用默認(rèn)值8.2數(shù)據(jù)完整性概述

一、定義

數(shù)據(jù)的完整性是指存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)的正確性和相容性。

滿足數(shù)據(jù)完整性的特征:1.數(shù)據(jù)的值正確無(wú)誤。即數(shù)據(jù)類型必須正確,數(shù)據(jù)的值必須處于正確的范圍中。2.數(shù)據(jù)的存在必須確保同一表格數(shù)據(jù)之間關(guān)系的和諧關(guān)系。3.數(shù)據(jù)的存在必須能確保維護(hù)不同表格數(shù)據(jù)之間的和諧關(guān)系。實(shí)施的方式:1.引用的說(shuō)明性完整性在插入、修改和刪除數(shù)據(jù)時(shí)自動(dòng)實(shí)施數(shù)據(jù)完整性。2.引用的行動(dòng)完整性通過(guò)視圖、觸發(fā)器、存儲(chǔ)過(guò)程來(lái)維護(hù)8.2數(shù)據(jù)完整性概述二、分類n〔值〕域完整性:限制向表中輸入值的范圍;n實(shí)體完整性:每個(gè)實(shí)體必須擁有一個(gè)主鍵或唯一標(biāo)識(shí);n參照〔引用〕完整性:在插入或刪除數(shù)據(jù)時(shí)維護(hù)表間數(shù)據(jù)的一致性用戶自定義完整性:在實(shí)際應(yīng)用中的業(yè)務(wù)規(guī)那么8.2使用約束實(shí)施數(shù)據(jù)完整性常用的有: PRIMARYKEY 主鍵約束 FOREIGNKEY 外鍵約束 UNIQUE 唯一約束 CHECK 檢查約束分為兩級(jí): 列級(jí)約束:列級(jí)約束為行定義的一局部,只能應(yīng)用在一列上 表級(jí)約束:獨(dú)立于列的定義,可以應(yīng)用在表的多個(gè)列上。8.2使用約束實(shí)施數(shù)據(jù)完整性一、PRIMARYKEY表中經(jīng)常有一個(gè)列或列的組合,其值能唯一地標(biāo)識(shí)表中的每一行。這樣的一列或多列稱為表的主鍵。當(dāng)創(chuàng)立或更改表時(shí)可通過(guò)定義PRIMARYKEY約束來(lái)創(chuàng)立主鍵。1.創(chuàng)立格式1:[CONSTRAINT<約束名>]PRIMARYKEY[CLUSTERED|NONCLUSTERED]格式2:CONSTRAINT<約束名>PRIMARYKEY[CLUSTERED|NONCLUSTERED][(列名1,……)]說(shuō)明:8.2使用約束實(shí)施數(shù)據(jù)完整性一、PRIMARYKEYl

格式1為列級(jí)約束,格式2為表級(jí)約束〔加列名〕。l

建立為主鍵的列,其值唯一,并且不能為空(NULL)。l

系統(tǒng)將自動(dòng)為主鍵建立唯一索引。l

在一個(gè)數(shù)據(jù)表中主鍵只能定義一個(gè)。例:在檔案表中將學(xué)號(hào)定義為主鍵,成績(jī)表中將學(xué)號(hào)和課程名稱定義為主鍵約束。CREATETABLEDAB〔XHvarchar(12)NOTNULLCONSTRAINTXH_KEYPRIMARYKEYCLUSTERED,XMVARCHAR(20))或8.2使用約束實(shí)施數(shù)據(jù)完整性一、PRIMARYKEYCREATETABLEDAB〔XHvarchar(12)NOTNULL,XMVARCHAR(20),CONSTRAINTXH_KEYPRIMARYKEYCLUSTERED(xh))學(xué)生成績(jī)表CREATETABLECJB(xhVARCHAR(12)NOTNULL,kcmcVARCHAR(40)NOTNULL,CJint,CONSTRAINTCjb_xhkcmcPRIMARYKEYCLUSTERED(XH,KCMC))8.2使用約束實(shí)施數(shù)據(jù)完整性一、PRIMARYKEYB.刪除主鍵 ALTERTABLE<表名> DROPCONSTRAINT主鍵名[,…]C.添加主鍵(表級(jí)) ALTERTABLE<表名> ADD[CONSTRAINT主鍵名]PRIMARYKEY[CLUSTERED|NONCLUSTERED][(列名1,……)]8.2使用約束實(shí)施數(shù)據(jù)完整性二、唯一約束〔UNIQUE〕A.建立格式:CONSTRAINT<約束名>UNIQUE[CLUSTERED|NONCLUSTERED][(列名1,……)]說(shuō)明:l

分列級(jí)約束和表級(jí)約束〔加列名〕l

建立唯一約束的列,其值允許為空,但值必須唯一l

自動(dòng)創(chuàng)立唯一索引l

允許建立多個(gè)唯一約束.例如:學(xué)生檔案表中增加一個(gè)字段身份證號(hào),定義為唯一約束8.2使用約束實(shí)施數(shù)據(jù)完整性二、唯一約束〔UNIQUE〕CREATETABLEDAB(XHVARCHAR(12)PRIMARYKEY,XMVARCHAR(20),XBBIT,DZVARCHAR(100),SFZHVARCHAR(18)CONSTRAINTSFZH_UNUNIQUE)

8.2使用約束實(shí)施數(shù)據(jù)完整性二、唯一約束〔UNIQUE〕B.刪除 ALTERTABLE<表名> DROPCONSTRAINT唯一約束名[,…]C.添加 ALTERTABLE<表名> ADD[CONSTRAINT唯一約束名]UNIQUE[CLUSTERED|NONCLUSTERED][(列名1,……)]8.2使用約束實(shí)施數(shù)據(jù)完整性三、檢查(CHECK)約束A.建立格式:CONSTRAINT<檢查約束名>

CHECK[NOTFORREPLICATION](條件表達(dá)式)說(shuō)明:l

用于檢查輸入列數(shù)據(jù)值來(lái)維護(hù)值域的完整性.l

檢查約束可以只應(yīng)用于新的數(shù)據(jù),也可以用于已經(jīng)存在的數(shù)據(jù)例如:成績(jī)表中成績(jī)限制為0到100之間的數(shù)。

8.2使用約束實(shí)施數(shù)據(jù)完整性三、檢查(CHECK)約束createtablecjb(xhvarchar(20),kcmcvarchar(40),cjintCONSTRAINTCK_cjCHECK(cj>=0andcj<=100))

8.2使用約束實(shí)施數(shù)據(jù)完整性三、檢查(CHECK)約束B.刪除檢查約束ALTERTABLE<表名>DROPCONSTRAINT<檢查約束名>C.添加檢查 ALTERTABLE<表名>ADD[列名類型]CONSTRAINT<檢查約束名>CHECK[NOTFORREPLICATION](條件表達(dá)式)D.檢查約束失效 ALTERTABLE<表名>CHECK|NOCHECK}CONSTRAINT{ALL|檢查約束名}8.2使用約束實(shí)施數(shù)據(jù)完整性四、外鍵約束(FOREIGNKEY)用來(lái)維護(hù)兩個(gè)表之間數(shù)據(jù)的一致性.A.建立格式:CONSTRAINT外鍵約束名FORGEINKEYREFERENCES被參照表(列名[,…])[NOTFORREPLICATION]說(shuō)明:l

受外鍵約束的列允許為NULL;l

外鍵的作用不光是對(duì)輸入自身表格的數(shù)據(jù)進(jìn)行限制,同時(shí)也限制了對(duì)主鍵所在表的數(shù)據(jù)進(jìn)行修改.l

被參照表的列名為主鍵。例如學(xué)生檔案表與學(xué)生成績(jī)表之間建立外鍵約束使用約束實(shí)施數(shù)據(jù)完整性四、外鍵約束(FOREIGNKEY)createtablecjb(xhvarchar(12)notnullCONSTRAINTxh_forkeyFOREIGNKEYREFERENCESDAB(XH),kcmcvarchar(40),cjintCONSTRAINTCK_cjCHECK(cj>=0andcj<=100))8.2使用約束實(shí)施數(shù)據(jù)完整性四、外鍵約束(FOREIGNKEY)B.刪除外鍵ALTERTABLE<表名> DROPCONSTRAINT外鍵約束名C.添加外鍵ALTERTABLE<表名> ADD列名…..使用規(guī)那么規(guī)那么是對(duì)錄入到列中的數(shù)據(jù)所實(shí)施的完整性約束。規(guī)那么可以被關(guān)聯(lián)到一列或幾列以及自定義的數(shù)據(jù)類型1.創(chuàng)立規(guī)那么格式:CREATERULE<規(guī)那么名>AS<條件表達(dá)式>說(shuō)明:l

描述規(guī)那么的條件表達(dá)式可以包含數(shù)據(jù)運(yùn)算、關(guān)系運(yùn)算以及IN、LIKE、BETWEEN等關(guān)鍵字。l

規(guī)那么中不能引用表中的列和別的數(shù)據(jù)對(duì)象。l

條件表達(dá)式中可包含一個(gè)局部變量,以@開始。例如:定義一個(gè)規(guī)那么限制取值范圍為0到100之間。規(guī)那么操作8.2使用規(guī)那么CREATERULERULE_CJAS(@CJ>=0AND@CJ<=100)2.規(guī)那么刪除 DROPRULE<規(guī)那么名>3.綁定和解除規(guī)那么 規(guī)那么的定義在未作用于列之前,毫無(wú)用處。l

綁定規(guī)那么sp_bindrule<規(guī)那么名>,<表名>.<列名>|<自定義類型>注意:如果該列原來(lái)已經(jīng)綁定了一個(gè)規(guī)那么,那么原規(guī)那么會(huì)被新規(guī)那么取代。例如:sp_bindrulerule_cj,’cjb.cj’l解除規(guī)那么sp_unbindrule<表名>.<列名>|<自定義類型>例如:sp_unbindrule‘cjb.cj’規(guī)那么操作8.2使用默認(rèn)值

1.創(chuàng)立默認(rèn)值 CREATEDEFAULT<默認(rèn)值名> AS<常量值>2.綁定默認(rèn)值sp_bindefault<默認(rèn)值名>,<表名>.<列名>|<自定義類型>3.解除默認(rèn)值sp_unbindefault<表名>.<列名>|<自定義類型>例如:CREATEDEFAULTZONEAS0sp_bindefaultZONE,’CJB.CJ’sp_unbindefault’CJB.CJ’8.3

引入并發(fā)控制控制機(jī)制數(shù)據(jù)庫(kù)是一個(gè)共享資源,可以供多個(gè)用戶使用。這些用戶程序可以一個(gè)一個(gè)地串行執(zhí)行,每個(gè)時(shí)刻只有一個(gè)用戶程序運(yùn)行,執(zhí)行對(duì)數(shù)據(jù)庫(kù)的存取,其他用戶程序必須等到這個(gè)用戶程序結(jié)束以前方能對(duì)數(shù)據(jù)庫(kù)存取。如果一個(gè)用戶程序涉及大量數(shù)據(jù)的輸入/輸出交換,那么數(shù)據(jù)庫(kù)系統(tǒng)的大局部時(shí)間將處于閑置狀態(tài)。為了充分利用數(shù)據(jù)庫(kù)資源,發(fā)揮數(shù)據(jù)庫(kù)共享資源的特點(diǎn),應(yīng)該允許多個(gè)用戶并行地存取數(shù)據(jù)庫(kù)。但這樣就會(huì)產(chǎn)生多個(gè)用戶程序并發(fā)存取同一數(shù)據(jù)的情況,假設(shè)對(duì)并發(fā)操作不加控制就可能會(huì)存取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。因此數(shù)據(jù)庫(kù)管理系統(tǒng)必須提供并發(fā)控制機(jī)制。并發(fā)控制機(jī)制的好壞是衡量一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)性能的重要標(biāo)志之一。

一.事務(wù)并發(fā)控制控制機(jī)制事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,它是用戶定義的一組操作序列,這些操作要么都做,要么都不做。在關(guān)系數(shù)據(jù)庫(kù)中,一個(gè)事務(wù)可以是一組SQL語(yǔ)句、一條SQL語(yǔ)句或整個(gè)程序。通常情況下,一個(gè)應(yīng)用程序包括多個(gè)事務(wù)。

事務(wù)以BEGINTRANSACTION開始,以COMMIT或ROLLBACK結(jié)束。8.3

二.并發(fā)操作帶來(lái)的數(shù)據(jù)不一致性并發(fā)控制控制機(jī)制1.喪失修改喪失修改是指事務(wù)1與事務(wù)2從數(shù)據(jù)庫(kù)中讀入同一數(shù)據(jù)并修改,事務(wù)2的提交結(jié)果破壞了事務(wù)1提交的結(jié)果,導(dǎo)致事務(wù)1的修改被喪失。2.不可重復(fù)讀〔nonrepeatableread〕不可重復(fù)讀是指事務(wù)1讀取數(shù)據(jù)后,事務(wù)2執(zhí)行更新操作,使事務(wù)1無(wú)法再現(xiàn)前一次的讀取結(jié)果。3.讀“臟”數(shù)據(jù)讀“臟”數(shù)據(jù)是指事務(wù)l修改某一數(shù)據(jù),并將其寫回磁盤,事務(wù)2讀取同一數(shù)據(jù)后,事務(wù)1由于某種原因被撤銷,這時(shí)事務(wù)1已修改正的數(shù)據(jù)恢復(fù)原值,事務(wù)2讀到的數(shù)據(jù)就與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致,是不正確的數(shù)據(jù),稱為“臟”數(shù)據(jù)。8.3

三.并發(fā)控制并發(fā)控制控制機(jī)制并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作,防止造成數(shù)據(jù)的不一致性,使一個(gè)用戶事務(wù)的執(zhí)行不受其他事務(wù)的干擾。四.并發(fā)控制的主要方法并發(fā)控制的主要方法是采用封鎖機(jī)制。例如:在前面的飛機(jī)訂票系統(tǒng)中,甲事務(wù)要修改A,在讀出A前先封鎖A。這時(shí)其他事務(wù)就不能讀取和修改A,直到甲修改并寫回A,解除了對(duì)A的封鎖為止。這樣,就不會(huì)喪失甲的修改。8.3并發(fā)控制控制機(jī)制

事務(wù)是作為單個(gè)邏輯工作單元執(zhí)行的一系列操作。一個(gè)邏輯工作單元必須有四個(gè)屬性,稱為ACID〔原子性、一致性、隔離性和持久性〕屬性,只有這樣才能成為一個(gè)事務(wù):原子性事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。一致性事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫(kù)中,所有規(guī)那么都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)〔如B樹索引或雙向鏈表〕都必須是正確的。

事務(wù)控制語(yǔ)句8.3并發(fā)控制控制機(jī)制隔離性由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。持久性事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。第二節(jié)

語(yǔ)句

事務(wù)控制語(yǔ)句8.3并發(fā)控制控制機(jī)制☆BEGINTRAN[SACTION][<事務(wù)名>]

_開始一個(gè)事務(wù)☆COMMIT[TRAN[SACTION][<事務(wù)名>]

_提交一個(gè)事務(wù)☆ROLLBACK[TRAN[SACTION][<事務(wù)名>]]

_回滾一個(gè)事務(wù)☆SAVETRAN[SACTION][<事務(wù)名>]設(shè)置事務(wù)新的起點(diǎn)(保存點(diǎn))說(shuō)明:ROLLBACKWORK、COMMITWORK、SAVEWORK等價(jià)于上面相應(yīng)的命令,但不支持用戶定義事務(wù)名。第二節(jié)

語(yǔ)句

事務(wù)控制語(yǔ)句8.3并發(fā)控制控制機(jī)制例1:BEGINTRANSACTIONUPDATEcjbSETcj=cj+5WHEREcj>55andcj<60IF@@ROWCOUNT=1

COMMITTRANELSE

ROLLBACKTRAN第二節(jié)

語(yǔ)句

事務(wù)控制語(yǔ)句8.3

數(shù)據(jù)庫(kù)的備份與恢復(fù)內(nèi)容提要數(shù)據(jù)庫(kù)的備份設(shè)備與策略數(shù)據(jù)庫(kù)的備份數(shù)據(jù)庫(kù)的恢復(fù)8.4備份概述

一、數(shù)據(jù)庫(kù)備份設(shè)備類型

1.磁盤設(shè)備〔常用〕硬盤、軟盤、光盤、U盤等2.磁帶設(shè)備3.命名管道設(shè)備為第三方的設(shè)備軟件和設(shè)備提供一個(gè)靈活而強(qiáng)大的通道。為什么要備份?1.存儲(chǔ)介質(zhì)故障2.效勞器徹底崩潰3.用戶錯(cuò)誤操作4.系統(tǒng)需要8.4備份概述

二、物理備份設(shè)備名和邏輯備份設(shè)備名1.物理備份設(shè)備名主要是用來(lái)供操作系統(tǒng)對(duì)備份設(shè)備進(jìn)行引用和管理。如:磁盤設(shè)備名為:路徑+文件名c:\data\mydb.bak2.邏輯備份設(shè)備名是物理備份設(shè)備名的別名。說(shuō)明:

在備份過(guò)程中可以使用邏輯備份設(shè)備名,也可以使用物理備份設(shè)備名。8.4備份概述

三、SQLSERVER的備份策略1.只備份數(shù)據(jù)庫(kù)2.備份數(shù)據(jù)庫(kù)和事務(wù)日志3.增量備份

8.4備份數(shù)據(jù)庫(kù)

1.企業(yè)管理器方式〔略〕2.命令方式備份相關(guān)的命令:sp_addumpdevice_用于創(chuàng)立備份設(shè)備BackUp—用于執(zhí)行數(shù)據(jù)庫(kù)備份sp_addumpdevice格式:sp_addumpdevice[@devtype=]'device_type',

[@logicalname=]'logical_name',

[@physicalname=]'physical_name'說(shuō)明:device_type:DISK〔磁盤〕、TAPE〔磁帶〕、PIPE〔命名管道〕8.4備份數(shù)據(jù)庫(kù)

logical_name創(chuàng)立的備份設(shè)備的邏輯名;physical_name具體的存儲(chǔ)位置〔路徑〕舉例:Sp_addumpdevice‘DISK’,’MyDBBak’,’C:\DATA\MyDBBak’—本地磁盤Sp_addumpdevice‘DISK’,’MyDBBak’,’\\User1\C\DATA\MyDBBak’—網(wǎng)絡(luò)盤Sp_addumpdevice‘TAPE’,’MyDBBak’,’\\.\TAPE0’—磁帶8.4備份數(shù)據(jù)庫(kù)

BackUp格式:BACKUPDATABASE{db_name|@db_name_var

}TO<backup_device>[WITH{INIT|NOINIT}]

[[,]PASSWORD={password|@password_var

}]舉例:BackupDatabaseMyDBToDISK=’MyDBBak’BackupDatab

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論