




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1
SQLServer許可權(quán)管理SQLServer的身份驗(yàn)證創(chuàng)建和管理用戶登錄的方法固定伺服器角色和服務(wù)器角色管理資料庫許可權(quán)的方法2SQLServer2000安全模式SQLServer2000的安全性管理是建立在認(rèn)證(authentication)和訪問許可(permission)兩者機(jī)制上的。認(rèn)證是指來確定登錄SQLServer的用戶的登錄帳號(hào)和密碼是否正確,以此來驗(yàn)證其是否具有連接SQLServer的許可權(quán)。但是通過認(rèn)證階段並不代表能夠訪問SQLServer中的數(shù)據(jù),用戶只有在獲取訪問資料庫的許可權(quán)之後,才能夠?qū)λ欧魃系馁Y料庫進(jìn)行許可權(quán)許可下的各種操作(主要是針對(duì)資料庫對(duì)象如表、視圖、存儲(chǔ)過程等),這種用戶訪問資料庫許可權(quán)的設(shè)置是通過用戶帳號(hào)來實(shí)現(xiàn)的。同時(shí)在SQLServer中,角色作為用戶組的代替物大大地簡化了安全性管理。所以在SQLServer的安全模型中包括以下幾部分:SQLServer登錄、資料庫用戶、許可權(quán)、角色
3SQLServer2000登錄認(rèn)證安全帳戶認(rèn)證是用來確認(rèn)登錄SQLServer的用戶的登錄帳號(hào)和密碼的正確性,由此來驗(yàn)證其是否具有連接SQLServer的許可權(quán)。SQLServer2000提供了兩種確認(rèn)用戶的認(rèn)證模式:Windows身份驗(yàn)證模式混合模式4Windows身份驗(yàn)證SQLServer資料庫系統(tǒng)通常運(yùn)行在WindowsNT/2000伺服器平臺(tái)上,而NT作為網(wǎng)路操作系統(tǒng),本身就具備管理登錄、驗(yàn)證用戶合法性的能力,因此Windows身份驗(yàn)證模式正是利用了這一用戶安全性和帳號(hào)管理的機(jī)制,允許SQLServer也可以使用NT/2000的用戶名和口令。在這種模式下,用戶只需要通過WindowsNT/2000的認(rèn)證,就可以連接到SQLServer,而SQLServer本身也就不需要管理一套登錄數(shù)據(jù)。當(dāng)SQLServer實(shí)例在windows98/Me版上運(yùn)行時(shí),windows身份驗(yàn)證模式不可用。5SQLServer身份驗(yàn)證在該認(rèn)證模式下,用戶在連接SQLServer時(shí)必須提供登錄名和登錄密碼。這些登錄資訊存儲(chǔ)在系統(tǒng)表syslogins中,與NT的登錄帳號(hào)無關(guān),SQLServer自己執(zhí)行認(rèn)證處理。如果輸入的登錄資訊與系統(tǒng)表syslogins中的某條記錄相匹配,則表明登錄成功。提供SQLServer身份驗(yàn)證是為了向後相容性,同時(shí)也因?yàn)閣indows98上不支持windows身份驗(yàn)證模式。6Windows身份驗(yàn)證的優(yōu)點(diǎn)WINDOWS認(rèn)證模式比起SQLServer認(rèn)證模式來有許多優(yōu)點(diǎn),原因在於WNDOWS認(rèn)證模式集成了NT或WINDOWS2000的安全系統(tǒng),並且NT安全管理具有眾多特徵,如安全合法性、口令加密、對(duì)密碼最小長度進(jìn)行限制等。所以當(dāng)用戶試圖登錄到SQLServer時(shí),它從NT或WNDOWS2000的網(wǎng)路安全屬性中獲取登錄用戶的帳號(hào)與密碼,並使用NT或WINDWOS2000驗(yàn)證帳號(hào)和密碼的機(jī)制來檢驗(yàn)登錄的合法性,從而提高了SQLServer的安全性。在WINDOWSNT中使用了用戶組,所以當(dāng)使用WINDOWS認(rèn)證時(shí),我們總是把用戶歸入一定的NT用戶組,以便當(dāng)在SQLServer中對(duì)NT用戶組進(jìn)行資料庫訪問許可權(quán)設(shè)置時(shí),能夠把這種許可權(quán)設(shè)置傳遞給單一用戶。而且當(dāng)新增加一個(gè)登錄用戶時(shí),也總把它歸入某一NT用戶組。這種方法可以使用戶更為方便地加入到系統(tǒng)中,並消除了逐一為每一個(gè)用戶進(jìn)行資料庫訪問許可權(quán)設(shè)置而帶來的不必要的工作量。7混合認(rèn)證模式在混合認(rèn)證模式下,WINDOWS認(rèn)證和SQLServer認(rèn)證這兩種認(rèn)證模式都是可用的。NT的用戶既可以使用NT認(rèn)證,也可以使用SQLServer認(rèn)證。8選擇身份驗(yàn)證模式基於windows和SQLServer有兩種身份驗(yàn)證模式可選:windows身份驗(yàn)證模式和混合模式。若選擇windows身份驗(yàn)證模式,則用戶只能使用windows身份驗(yàn)證聯(lián)接到SQLServer;若選擇混合模式,則用戶既可以windows身份驗(yàn)證連接到SQLServer,又可以使用SQLServer身份驗(yàn)證連接到SQLServer。9利用企業(yè)管理器選擇身份驗(yàn)證模式其主要過程如下:1.打開企業(yè)管理器,選擇伺服器組中希望設(shè)置身份驗(yàn)證模式的伺服器。。2.在該伺服器上單擊右鍵,從快捷菜單中選擇“屬性”選項(xiàng),打開SQLServer屬性對(duì)話框。3、在對(duì)話框中選擇“安全性”選項(xiàng)。3.在身份驗(yàn)證區(qū)域中可以選擇要設(shè)置的認(rèn)證模式:混合身份驗(yàn)證模式和僅windows。同時(shí)可以選擇審核級(jí)別中的一個(gè):10
無:表示禁用審核成功:表示只審核成功登錄嘗試。失?。罕硎局粚徍耸〉卿泧L試。全部:表示既審核成功登錄嘗試又審核失敗登錄嘗試。5、單擊“確定”按鈕,則完成了身份驗(yàn)證模式的選擇和設(shè)置。11創(chuàng)建和管理用戶登錄通過認(rèn)證階段並不代表用戶能夠訪問SQLServer中的數(shù)據(jù),同時(shí)他還必須通過許可確認(rèn)。用戶只有在具有訪問資料庫的許可權(quán)之後,才能夠?qū)λ欧魃系馁Y料庫進(jìn)行許可權(quán)許可下的各種操作,這種用戶訪問資料庫許可權(quán)的設(shè)置是通過用戶帳號(hào)來實(shí)現(xiàn)的。12伺服器登錄帳號(hào)和用戶帳號(hào)管理1.SQLServer伺服器登錄管理SQLServer有三個(gè)默認(rèn)的用戶登錄帳號(hào):即sa、administrators\builtin和guest。2.用戶帳號(hào)管理131.利用企業(yè)管理器創(chuàng)建、管理SQLServer登錄帳號(hào)其具體執(zhí)行步驟如下:(1)打開企業(yè)管理器,單擊需要登錄的伺服器左邊的“+”號(hào),然後展開安全性檔夾。(2)用右鍵單擊“登錄”,從快捷菜單中選擇新建登錄(newlogin)選項(xiàng),則出現(xiàn)SQLServer登錄屬性—新建登錄對(duì)話框,如圖1所示。(3)在名稱編輯框中輸入登錄名,在身份驗(yàn)證選項(xiàng)欄中選擇新建的用戶帳號(hào)是WindowsNT認(rèn)證模式,還是SQLServer認(rèn)證模式。14(4)選擇伺服器角色標(biāo)籤,圖2所示,在伺服器角色列表框中,列出了系統(tǒng)的固定伺服器角色。在該選項(xiàng)內(nèi)選擇將分配給登錄帳戶的固定伺服器角色。(5)選擇資料庫訪問標(biāo)籤,如圖3所示。上面的列表框列出了該帳號(hào)可以訪問的資料庫,單擊資料庫左邊的複選框,表示該用戶可以訪問相應(yīng)的資料庫以及該帳號(hào)在資料庫中的用戶名。下麵是該用戶在資料庫中的角色。(6)設(shè)置完成後,單擊“確定”按鈕即可完成登錄帳號(hào)的創(chuàng)建。15圖1新建登錄帳號(hào)對(duì)話框16圖2伺服器角色對(duì)話框17圖3資料庫訪問對(duì)話框18使用SQLServer的創(chuàng)建登錄嚮導(dǎo)工具創(chuàng)建登錄帳號(hào)。其具體操作過程如下:圖4--圖1019圖4歡迎使用創(chuàng)建登錄嚮導(dǎo)對(duì)話框20圖5選擇身份驗(yàn)證模式對(duì)話框21圖6選擇對(duì)用戶帳號(hào)的安全性設(shè)置對(duì)話框22圖7輸入登錄資訊對(duì)話框23圖8選擇安全性角色對(duì)話框24圖9選擇允許登錄帳號(hào)訪問的資料庫對(duì)話框25圖10完成創(chuàng)建登錄嚮導(dǎo)對(duì)話框26伺服器角色伺服器角色是指根據(jù)SQLServer的管理任務(wù),以及這些任務(wù)相對(duì)的重要性等級(jí)來把具有SQLServer管理職能的用戶劃分為不同的用戶組,每一組所具有的管理SQLServer的許可權(quán)都是SQLServer內(nèi)置的,即不能對(duì)其進(jìn)行添加、修改和刪除,只能向其中加入用戶或者其他角色。27七種常用的固定伺服器角色系統(tǒng)管理員:擁有SQLServer所有的許可權(quán)許可。伺服器管理員:管理SQLServer伺服器端的設(shè)置。磁片管理員:管理磁片檔。進(jìn)程管理員:管理SQLServer系統(tǒng)進(jìn)程。安全管理員:管理和審核SQLServer系統(tǒng)登錄。安裝管理員:增加、刪除連接伺服器,建立資料庫複製以及管理擴(kuò)展存儲(chǔ)過程。資料庫創(chuàng)建者:創(chuàng)建資料庫,並對(duì)數(shù)據(jù)庫進(jìn)行修改。28資料庫角色資料庫角色是為某一用戶或某一組用戶授予不同級(jí)別的管理或訪問資料庫以及資料庫對(duì)象的許可權(quán),這些許可權(quán)是資料庫專有的,並且還可以使一個(gè)用戶具有屬於同一資料庫的多個(gè)角色。SQLServer提供了兩種類型的資料庫角色:即固定的資料庫角色和用戶自定義的資料庫角色。29固定的資料庫角色public:維護(hù)全部默認(rèn)許可。db_owner:資料庫的所有者,可以對(duì)所擁有的資料庫執(zhí)行任何操作。db_accessadmin:可以增加或者刪除資料庫用戶、工作組和角色。(使用sp_grantdbaccess存儲(chǔ)過程)db_ddladmin:可以增加、刪除和修改資料庫中的任何對(duì)象。(使用creat、alter和drop語句)db_securityadmin:執(zhí)行語句許可和對(duì)象許可。(使用grant、revoke和deny語句)db_backupoperator:可以備份和恢復(fù)資料庫。(使用DBCC、CheckPoint和Backup語句)30db_datareader:能且僅能對(duì)數(shù)據(jù)庫中的任何表執(zhí)行select操作,從而讀取所有表的資訊。(有Select許可權(quán))db_datawriter:能夠增加、修改和刪除表中的數(shù)據(jù),但不能進(jìn)行select操作。(可以對(duì)表或視圖使用insert、update和delete語句)db_denydatareader:不能讀取資料庫中任何表中的數(shù)據(jù)。db_denydatawriter:不能對(duì)數(shù)據(jù)庫中的任何表執(zhí)行增加、修改和刪除數(shù)據(jù)操作。31可以使用sp_helpdbfixedrole系統(tǒng)存儲(chǔ)命令查看這9種固定資料庫角色。Public資料庫角色:是SqlServer中一個(gè)特殊的資料庫角色。它有如下特點(diǎn):捕獲資料庫中用戶的所有默認(rèn)許可權(quán)。無法將用戶、組或角色指派給它,因?yàn)槟J(rèn)情況下它們就屬於該角色。含在每個(gè)資料庫中,包括master、msdb、tempdb、model以及所有用戶數(shù)據(jù)庫中無法刪除。32使用企業(yè)管理器管理用戶登錄可以在企業(yè)管理器中,為數(shù)據(jù)庫角色添加/刪除一個(gè)或多個(gè)登錄。步驟:1、在企業(yè)管理器中,展開指定的伺服器以及指定的資料庫。2、展開該資料庫節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)“角色”3、在需要添加登錄的資料庫角色上單擊滑鼠右鍵,然後從彈出菜單中選擇命令“屬性”。此時(shí)彈出“資料庫角色屬性”對(duì)話框,在該對(duì)話框中顯示了該資料庫角色所包含的所有登錄帳號(hào)。4、若希望將一個(gè)登錄從該資料庫角色中刪除,選中該登錄帳號(hào),按“刪除”按鈕即可。若希望添加,則按“添加”按鈕。5、單擊“許可權(quán)”按鈕可以從彈出的窗口中查看該資料庫角色的所有權(quán)限。若該資料庫角色是自定義的資料庫角色,還可對(duì)這些許可權(quán)進(jìn)行修改。6、單擊“確定”按鈕,結(jié)束。33使用系統(tǒng)存儲(chǔ)過程管理登錄帳戶sp_addrolemember:向資料庫角色中添加一個(gè)安全帳戶。語法為:sp_addrolemember角色,安全帳戶sp_droprolemember:從資料庫角色中刪除一個(gè)安全帳戶。語法為:sp_droprolemember角色,安全帳戶注意:只有sysadmin固定伺服器角色、db_owner和db_secruityadmin固定資料庫角色的成員才能執(zhí)行sp_droprolemember。只有db_owner固定資料庫角色的成員才可以從固定資料庫角色中刪除用戶。34例:在資料庫角色db_ddladmin中添加一個(gè)安全帳戶Headquaters/adam:UsecompanyExecsp_addrolemember‘db_ddladmin’,’Headquaters\adam’例:刪除剛加入到伺服器角色db_ddladmin中的成員Headquaters/adamExecsp_dropaddrolemember‘db_ddladmin’,’Headquaters\adam’35使用系統(tǒng)存儲(chǔ)過程管理伺服器角色在SQLServer中,管理伺服器角色的存儲(chǔ)過程主要有兩個(gè):sp_addsrvrolemember:在一個(gè)伺服器角色中添加一個(gè)登錄sp_dropsrvrolemember:從一個(gè)伺服器角色中取消一個(gè)登錄36系統(tǒng)存儲(chǔ)過程sp_addsrvrolemember可以將某一登錄帳號(hào)加入到伺服器角色中,使其成為該伺服器角色的成員。其語法形式如下:sp_addsrvrolemember‘登錄帳戶名’,‘角色’注意:sysadmin固定伺服器的成員可以將成員添加到任何固定伺服器角色。在將登錄添加到固定伺服器角色時(shí),該登錄就會(huì)得到愈此固定伺服器角色相關(guān)的許可權(quán)。不能更改sa登錄的角色成員資格。37系統(tǒng)存儲(chǔ)過程sp_dropsrvrolemember可以將某一登錄者從某一伺服器角色中刪除,當(dāng)該成員從伺服器角色中被刪除後,便不再具有該伺服器角色所設(shè)置的許可權(quán)。其語法形式如下:sp_dropsrvrolemember‘登錄帳戶名’,‘角色’38系統(tǒng)存儲(chǔ)過程sp_dropsrvrolemember可以將某一登錄者從某一伺服器角色中刪除,當(dāng)該成員從伺服器角色中被刪除後,便不再具有該伺服器角色所設(shè)置的許可權(quán)。其語法形式如下:sp_dropsrvrolemember‘登錄帳戶名’,‘角色’注意:只有sysadmin才可以執(zhí)行該存儲(chǔ)過程,從固定伺服器角色中刪除任意登錄。一個(gè)固定伺服器角色的成員可以刪除相同固定伺服器角色中的其他成員。如果某些許可權(quán)與某個(gè)伺服器角色相關(guān),那麼從該伺服器角色中刪除一個(gè)登錄後,給登錄就不能再執(zhí)行基於這些許可權(quán)的活動(dòng)了。不能從任何固定伺服器中刪除sa登錄。39例:再伺服器角色serveradmin中添加一個(gè)登錄adamExecsp_addsrvrolememver‘a(chǎn)dam’,’serveradmin’
例:刪除剛加入的成員。Execsp_dropsrvrolememver‘a(chǎn)dam’,’serveradmin’可以使用系統(tǒng)存儲(chǔ)過程sp_srvrolepermisiion查看固定伺服器角色所擁有的許可權(quán),語法為:sp_srvrolepermission固定伺服器角色例:sp_srvrolepermissionserveradmin40創(chuàng)建資料庫角色創(chuàng)建用戶定義的資料庫角色就是創(chuàng)建一組用戶,這些用戶具有相同的一組許可。如果一組用戶需要執(zhí)行在SQLServer中指定的一組操作並且不存在對(duì)應(yīng)的WindowsNT組,或者沒有管理WindowsNT用戶帳號(hào)的許可,就可以在資料庫中建立一個(gè)用戶自定義的資料庫角色。用戶自定義的資料庫角色有兩種類型:即標(biāo)準(zhǔn)角色和應(yīng)用程式角色。41標(biāo)準(zhǔn)角色通過對(duì)用戶許可權(quán)等級(jí)的認(rèn)定而將用戶劃分為不用的用戶組,使用戶總是相對(duì)於一個(gè)或多個(gè)角色,從而實(shí)現(xiàn)管理的安全性。應(yīng)用程式角色是一種比較特殊的角色。當(dāng)我們打算讓某些用戶只能通過特定的應(yīng)用程式間接地存取資料庫中的數(shù)據(jù)而不是直接地存取資料庫數(shù)據(jù)時(shí),就應(yīng)該考慮使用應(yīng)用程式角色。當(dāng)某一用戶使用了應(yīng)用程式角色時(shí),他便放棄了已被賦予的所有資料庫專有許可權(quán),他所擁有的只是應(yīng)用程式角色被設(shè)置的角色。標(biāo)準(zhǔn)角色和應(yīng)用程式角色42使用企業(yè)管理器管理資料庫角色在企業(yè)管理器中可以實(shí)現(xiàn)資料庫角色的創(chuàng)建、授權(quán)和刪除等操作。步驟如下:1、打開企業(yè)管理器,選中指定的資料庫2、選中該資料庫節(jié)點(diǎn)的下一級(jí)節(jié)點(diǎn)“角色”,單擊滑鼠右鍵,選擇“新建資料庫角色”3、在對(duì)話框“資料庫角色屬性-新建角色”中作如下操作:輸入名稱、選擇角色類型(標(biāo)準(zhǔn)角色,應(yīng)用程式角色)、若選中的是標(biāo)準(zhǔn)角色,還可以單擊“添加”按鈕向該角色中添加用戶。4、單擊“確定”即可。43若要?jiǎng)h除一個(gè)資料庫角色,在企業(yè)管理器中選擇該角色,然後右擊滑鼠並選擇“刪除”即可。注意:不能刪除固定資料庫角色。44使用系統(tǒng)存儲(chǔ)過程管理資料庫角色sp_addrole:用來創(chuàng)建一個(gè)新的資料庫角色sp_addrole‘role’[,’owner’]其中,role是新的資料庫角色的名稱。Owner是新角色的所有者,默認(rèn)值為dbo。Owner必須是當(dāng)前資料庫中的某個(gè)用戶或角色。例:創(chuàng)建一個(gè)資料庫角色customersUsecompanyGoExecsp_addrole‘customers’在添加角色之後,可以使用sp_addrolemember添加安全帳戶,使其稱為該角色的成員。45sp_droprole:用於刪除一個(gè)資料庫角色sp_droprolerole例:刪除剛建立的customers資料庫角色Execsp_droprole‘customers’注意:只能刪除用戶自己創(chuàng)建的資料庫角色,不能刪除sqlserver中的固定資料庫角色。46許可權(quán)許可權(quán)用來指定授權(quán)用戶可以使用的資料庫對(duì)象和這些授權(quán)用戶可以對(duì)這些資料庫對(duì)象執(zhí)行的操作。用戶在登錄到SQLServer之後,其用戶帳號(hào)所歸屬的NT組或角色所被賦予的許可(許可權(quán))決定了該用戶能夠?qū)δ男┵Y料庫對(duì)象執(zhí)行哪種操作以及能夠訪問、修改哪些數(shù)據(jù)。在每個(gè)資料庫中用戶的許可權(quán)獨(dú)立於用戶帳號(hào)和用戶在資料庫中的角色,每個(gè)資料庫都有自己獨(dú)立的許可權(quán)系統(tǒng),在SQLServer中包括三種類型的許可:即對(duì)象許可權(quán)、語句許可權(quán)和暗示性許可權(quán)。47三種許可權(quán)類型1、對(duì)象許可權(quán)表示對(duì)特定的資料庫對(duì)象,即表、視圖、字段和存儲(chǔ)過程的操作許可,它決定了能對(duì)表、視圖等資料庫對(duì)象執(zhí)行哪些操作。資料庫對(duì)象的所有者可以將對(duì)象許可權(quán)授予指定的資料庫用戶。對(duì)於表和視圖,所有者可以授予Insert、Update、Select和References許可權(quán),或授予All許可權(quán)。用戶必須對(duì)表有Insert、Update、Select、Delete許可權(quán),才能在Insert、Update、Select、Delete語句中指定該表。References許可權(quán)使得另一個(gè)表的所有者可以對(duì)你的表中的列應(yīng)用他們表中的ReferenceForeignKey約束。482、語句許可權(quán):對(duì)用於創(chuàng)建資料庫和數(shù)據(jù)庫中的對(duì)象(如表、視圖和存儲(chǔ)過程等)的T-SQL語句所擁有的許可權(quán)。語句許可權(quán)包括:CreateDatabase、CreateTable、CreateView、CreateRule、CreateProcedure、CreateFunction、CreateDefault、BackupDatabase、BackupLog3、暗示性許可權(quán):指有SqlServer預(yù)定義的伺服器角色、資料庫的所有者和數(shù)據(jù)庫對(duì)象所有者所擁有的許可權(quán)。如:資料庫擁有者dbo可以在資料庫範(fàn)圍內(nèi)進(jìn)行任何操作,資料庫對(duì)象的所有者可以對(duì)所擁有的對(duì)象執(zhí)行一切活動(dòng)。暗示性許可權(quán)不需要明確指定,也不能進(jìn)行設(shè)置。49管理對(duì)象許可權(quán)某些資料庫中的用戶根據(jù)它們在資料庫中的角色被設(shè)定了某些缺省許可權(quán)。這樣的用戶有4類。一、系統(tǒng)管理員:可以創(chuàng)建和刪除資料庫,配置伺服器。二、資料庫屬主:可以創(chuàng)建和管理資料庫中的對(duì)象以及管理整個(gè)資料庫。三、對(duì)象屬主:可以在對(duì)象上進(jìn)行授予、廢除和拒絕許可權(quán)的操作,而且可以刪除對(duì)象。四、除此以外的都屬於第四類。50許可權(quán)管理對(duì)象許可權(quán)可以由sysadmin伺服器角色、資料庫所有者或特定資料庫角色中的成員進(jìn)行授予、拒絕和取消。管理對(duì)象許可權(quán)有兩種方法:企業(yè)管理器T-SQL51使用企業(yè)管理器管理對(duì)象許可權(quán)步驟:1、選擇資料庫節(jié)點(diǎn)2、選中需要查看或修改許可權(quán)的表,單擊滑鼠右鍵,選擇菜單命令“屬性”,打開“表屬性”對(duì)話框。3、在“表屬性”對(duì)話框中單擊“許可權(quán)”按鈕。4、若希望修改對(duì)某個(gè)資料庫對(duì)象的訪問權(quán),可以單擊相應(yīng)的方格,有如下三種形式:52V授予許可權(quán):表示允許某個(gè)用戶或角色對(duì)一個(gè)對(duì)象執(zhí)行某種操作。X禁止許可權(quán):表示在不撤銷用戶訪問許可權(quán)的情況下,禁止某個(gè)用戶或角色對(duì)一個(gè)對(duì)象執(zhí)行某種操作。空剝奪許可權(quán):表示不允許某個(gè)用戶或角色對(duì)一個(gè)對(duì)象執(zhí)行某種操作。535、還可以單擊一個(gè)特定的用戶或角色,然後單擊“列”按鈕,打開“列許可權(quán)”對(duì)話框,將許可權(quán)控制到字段的級(jí)別。6、單擊“確定”按鈕,結(jié)束設(shè)置。54使用T-SQL語句管理對(duì)象許可權(quán)可以使用Grant、deny、Revoke語句完成許可權(quán)的授予、禁止和剝奪。語法如下:grant許可權(quán)名稱[,…n]on表名|視圖名|存儲(chǔ)過程名to用戶帳戶deny許可權(quán)名稱[,…n]on表名|視圖名|存儲(chǔ)過程名to用戶帳戶revoke許可權(quán)名稱[,…n]on表名|視圖名|存儲(chǔ)過程名from用戶帳戶55例:將表employee的select許可權(quán)授予給一個(gè)SQLServer登錄adam,一個(gè)用戶自定義的資料庫角色salesmanagers和一個(gè)windows組headquaters\mimsGrantselectonemployeetoadam,salesmanager,[headquarters\mims]可以在grant語句中使用withgrantoption子句在授予許可權(quán)的同時(shí),將授予許可權(quán)的許可權(quán)授予該用戶、角色或組。例:grantselectonemployeetosalesmanagerwithgrantoption可以使用系統(tǒng)存儲(chǔ)過程sp_helprotect查看一個(gè)資料庫中現(xiàn)有的對(duì)象許可權(quán)。例:usecompanyExecsp_helprotect‘employee’56管理語句許可權(quán)可以管理的方式:企業(yè)管理器T-SQL語句57使用企業(yè)管理器管理語句許可權(quán)步驟:1、選擇指定的資料庫節(jié)點(diǎn)2、選中要查看或修改許可權(quán)的資料庫,單擊滑鼠右鍵,選擇菜單命令“屬性”,打開“資料庫屬性”對(duì)話框。3、在該對(duì)話框中選擇“許可權(quán)”標(biāo)籤,可以設(shè)置相應(yīng)的語句許可權(quán)。58使用T-SQL語句管理語句許可權(quán)可以使用Grant、deny、Revoke語句完成語句許可權(quán)的授予、禁止和剝奪。語法如下:grant語句名稱[,…n]to用戶帳戶[,…n]deny語句名稱[,…n]to用戶帳戶[,…n]revoke語句名稱[,…n]from用戶帳戶[,…n]注意:管理語句許可權(quán)只能在master系統(tǒng)資料庫中進(jìn)行。主要內(nèi)容基本概念關(guān)係資料庫常見資料庫對(duì)象範(fàn)式資料庫技術(shù)產(chǎn)生於二十世紀(jì)六十年代末,它作為數(shù)據(jù)管理最有效的手段在各行各業(yè)中得到越來越廣泛的應(yīng)用。可以這樣說任何一個(gè)行業(yè)的資訊化現(xiàn)代化都離不開資料庫,本章將介紹資料庫的一些基礎(chǔ)知識(shí)。2.1基本概念2.1.1數(shù)據(jù)Data所謂數(shù)據(jù)就是描述事物的符號(hào)。在我們的日常生活中,數(shù)據(jù)無所不在。數(shù)字,文字,圖表,圖象,聲音等都是數(shù)據(jù),人們通過數(shù)據(jù)來認(rèn)識(shí)世界交流資訊2.1.2資料庫DB即Database資料庫顧名思義就是數(shù)據(jù)存放的地方。在電腦中,資料庫是數(shù)據(jù)和數(shù)據(jù)庫對(duì)象的集合。所謂資料庫對(duì)象是指表(Table),
視圖(View),
存儲(chǔ)過程(StoredProcedure),觸發(fā)器(Trigger)等。這些資料庫對(duì)象將在以後的章節(jié)仲介紹2.1.3資料庫管理系統(tǒng)DBMS資料庫管理系統(tǒng)是用於管理數(shù)據(jù)的電腦軟體。資料庫管理系統(tǒng)使用戶能方便地定義和操縱數(shù)據(jù),維護(hù)數(shù)據(jù)的安全性和完整性,以及進(jìn)行多用戶下的併發(fā)控制和恢復(fù)資料庫2.1.4資料庫系統(tǒng)DBS(DatabaseSystem)資料庫系統(tǒng),狹義地講,是由資料庫,資料庫管理系統(tǒng)和用戶構(gòu)成。廣義地講是由電腦硬體,操作系統(tǒng),資料庫管理系統(tǒng),以及在它支持下建立起來的資料庫應(yīng)用程式用戶和維護(hù)人員組成的一個(gè)整體2.2關(guān)係資料庫資料庫這一概念提出後先後出現(xiàn)了幾種數(shù)據(jù)模型,其中基本的數(shù)據(jù)模型有三種:層次模型系統(tǒng),網(wǎng)路模型系統(tǒng)和關(guān)係模型系統(tǒng)。60年代末期提出的關(guān)係模型具有數(shù)據(jù)結(jié)構(gòu)簡單靈活,易學(xué)易懂,且具有雄厚的數(shù)學(xué)基礎(chǔ)等特點(diǎn),從70年代開始流行,發(fā)展到現(xiàn)在已成為資料庫的標(biāo)準(zhǔn)。目前廣泛使用的資料庫軟體都是基於關(guān)係模型的關(guān)係資料庫管理系統(tǒng)2.2.1關(guān)係模型RM即RelationalModel關(guān)係模型把世界看作是由實(shí)體(Entity)
和聯(lián)繫(Relationship)構(gòu)成的。所謂實(shí)體就是指現(xiàn)實(shí)世界中具有區(qū)分與其它事物的特徵或?qū)傩詠K與其它實(shí)體有聯(lián)繫的對(duì)象。在關(guān)係模型中實(shí)體通常是以表的形式來表現(xiàn)的,表的每一行描述實(shí)體的一個(gè)實(shí)例,表的每一列描述實(shí)體的一個(gè)特徵或?qū)傩?。所謂聯(lián)繫就是指實(shí)體之間的關(guān)係,即實(shí)體之間的對(duì)應(yīng)關(guān)係。聯(lián)繫可以分為三種:
一對(duì)一的聯(lián)繫:如一個(gè)人只有一種性別,一個(gè)人->性別為一對(duì)一的聯(lián)繫
一對(duì)多的聯(lián)繫:如相同性別的人有許多個(gè),性別->人為一對(duì)多的聯(lián)繫
多對(duì)一的聯(lián)繫:如很多人有同一個(gè)性別,人->性別為多對(duì)一的聯(lián)繫通過聯(lián)繫就可以用一個(gè)實(shí)體的資訊來查找另一個(gè)實(shí)體的資訊。關(guān)係模型把所有的數(shù)據(jù)都組織到表中,表是由行和列組成的。行表示數(shù)據(jù)的記錄,列表示記錄中的域,表反映了現(xiàn)實(shí)世界中的事實(shí)和值2.2.2關(guān)係資料庫RDB即RelationalDatabase所謂關(guān)係資料庫就是基於關(guān)係模型的資料庫。1關(guān)係資料庫管理系統(tǒng)RDBMS
關(guān)係資料庫管理系統(tǒng)就是管理關(guān)係資料庫的電腦軟體2關(guān)鍵字Key關(guān)鍵字是關(guān)係模型中的一個(gè)重要概念,它是邏輯結(jié)構(gòu),不是資料庫的物理部分
侯選關(guān)鍵字CandidateKey
如果一個(gè)屬性集能惟一地標(biāo)識(shí)表的一行,而又不含多餘的屬性,那麼這個(gè)屬性集稱為侯選關(guān)鍵字
主關(guān)鍵字PrimaryKey
主關(guān)鍵字是被挑選出來,作表的行的唯一標(biāo)識(shí)的侯選關(guān)鍵字。一個(gè)表只有一個(gè)主關(guān)鍵字,主關(guān)鍵字又可以稱為主鍵
公共關(guān)鍵字CommonKey
在關(guān)係資料庫中,關(guān)係之間的聯(lián)繫是通過相容或相同的屬性或?qū)傩越M來表示的。如果兩個(gè)關(guān)係中具有相容或相同的屬性或?qū)傩越M,那麼這個(gè)屬性或?qū)傩越M被稱為這兩個(gè)關(guān)係的公共關(guān)鍵字。
外關(guān)鍵字ForeignKey
如果公共關(guān)鍵字在一個(gè)關(guān)係中是主關(guān)鍵字,那麼這個(gè)公共關(guān)鍵字被稱為另一個(gè)關(guān)係的外關(guān)鍵字。由此可見,外關(guān)鍵字表示了兩個(gè)關(guān)係之間的聯(lián)繫,以另一個(gè)關(guān)係的外關(guān)鍵字作主關(guān)鍵字的表被稱為主表,具有此外關(guān)鍵字的表被稱為主表的從表,外關(guān)鍵字又稱作外鍵2.3常見的資料庫對(duì)象資料庫對(duì)象是資料庫的組成部分,常見的有以下幾種:2.3.1表Table資料庫中的表與我們?nèi)粘I钪惺褂玫谋砀耦愃?,它也是由行Row和列Column組成的列由同類的資訊組成,每列又稱為一個(gè)字段。每列的標(biāo)題稱為字段名。行包括了若干列資訊項(xiàng),一行數(shù)據(jù)稱為一個(gè)或一條記錄,它表達(dá)有一定意義的資訊組合。一個(gè)資料庫表由一條或多條記錄組成,沒有記錄的表稱為空表。每個(gè)表中通常都有一個(gè)主關(guān)鍵字,用於惟一地確定一條記錄。如下表圖的emp_id列Emp_idE_namesexbirthdayJob_levelDept_idHire_dateE_wage1001張三168-02-1410196-08-0280001002李四073-03-1910203-08-0220001003王五173-06-2510198-08-0250001004趙六070-12-3010302-08-0210002.3.2索引Index索引是根據(jù)指定的資料庫表列建立起來的順序。它提供了快速訪問數(shù)據(jù)的途徑,並且可監(jiān)督表的數(shù)據(jù),使其索引所指向的列中的數(shù)據(jù)不重複2.3.3視圖View視圖看上去同表似乎一模一樣,具有一組命名的字段和數(shù)據(jù)項(xiàng),但它其實(shí)是一個(gè)虛擬的表,在資料庫中並不實(shí)際存在。視圖是由查詢資料庫表產(chǎn)生的,它限制了用戶能看到和修改的數(shù)據(jù)。由此可見,視圖可以用來控制用戶對(duì)數(shù)據(jù)的訪問,並能簡化數(shù)據(jù)的顯示。即通過視圖只顯示那些需要的數(shù)據(jù)資訊2.3.4圖表Diagram在SQLServer中圖表其實(shí)就是資料庫表之間的關(guān)係示意圖。利用它可以編輯表與表之間的關(guān)係2.3.5缺省值Default
缺省值是當(dāng)在表中創(chuàng)建列或插入數(shù)據(jù)時(shí),對(duì)沒有指定其具體值的列或列資料項(xiàng)目賦予事先設(shè)定好的值2.3.6規(guī)則Rule規(guī)則是對(duì)數(shù)據(jù)庫表中數(shù)據(jù)資訊的限制,它限定的是表的列2.3.7觸發(fā)器Trigger觸發(fā)器是一個(gè)用戶定義的SQL事務(wù)命令的集合,當(dāng)對(duì)一個(gè)表進(jìn)行插入,更改,刪除時(shí),這組命令就會(huì)自動(dòng)執(zhí)行2.3.8存儲(chǔ)過程StoredProcedure存儲(chǔ)過程是為完成特定的功能而彙集在一起的一組SQL程式語句,經(jīng)編譯後存儲(chǔ)在資料庫中的SQL程式2.3.9用戶User所謂用戶就是有許可權(quán)訪問資料庫的人。資料庫對(duì)象還有很多我們將在以後的章節(jié)中詳細(xì)介紹2.4範(fàn)式構(gòu)造資料庫必須遵循一定的規(guī)則,在關(guān)係資料庫中這種規(guī)則就是範(fàn)式。範(fàn)式是符合某一種級(jí)別的關(guān)係模式的集合。關(guān)係資料庫中的關(guān)係必須滿足一定的要求,即滿足不同的範(fàn)式。目前關(guān)係資料庫有六種範(fàn)式:第一範(fàn)式(1NF),
第二範(fàn)式(2NF),
第三範(fàn)式(3NF),第四範(fàn)式(4NF),
第五範(fàn)式(5NF)
和第六範(fàn)式(6NF)。
滿足最低要求的範(fàn)式是第一範(fàn)式。
在第一範(fàn)式的基礎(chǔ)上進(jìn)一步滿足更多要求的稱為第二範(fàn)式;
其餘範(fàn)式以此類推。一般說來資料庫只需滿足第三範(fàn)式就行了。下麵我們舉例介紹第一範(fàn)式,
第二範(fàn)式
和第三範(fàn)式。2.4.1第一範(fàn)式(1NF)在任何一個(gè)關(guān)係資料庫中,第一範(fàn)式(1NF)
是對(duì)關(guān)係模式的基本要求。不滿足第一範(fàn)式
的資料庫就不是關(guān)係資料庫。所謂第一範(fàn)式(1NF)
是指數(shù)據(jù)庫表的每一列都是不可分割的基本資料項(xiàng)目,同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重複的屬性。如果出現(xiàn)重複的屬性,就可能需要定義一個(gè)新的實(shí)體,新的實(shí)體由重複的屬性構(gòu)成,新實(shí)體與原實(shí)體之間為一對(duì)多關(guān)係。在第一範(fàn)式中,表的每一行只包含一個(gè)實(shí)例的資訊。
在下例中,不能將員工資訊都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示。表的每一行只表示一個(gè)員工的資訊,一個(gè)員工的資訊在表中只出現(xiàn)一次。簡而言之第一範(fàn)式就是無重複的列。Emp_idE_namesexbirthdayJob_levelDept_idHire_dateE_wage1001張三168-02-1410196-08-0280001002李四073-03-1910203-08-0220001003王五173-06-2510198-08-0250001004趙六070-12-3010302-08-0210002.4.2第二範(fàn)式2NF
第二範(fàn)式2NF是在第一範(fàn)式的基礎(chǔ)上建立起來的,即滿足第二範(fàn)式,必須先滿足第一範(fàn)式;第二範(fàn)式要求資料庫表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分。為實(shí)現(xiàn)區(qū)分,通常需要為表加上一個(gè)列以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。如上表,員工資訊表中加上了員工編號(hào)emp_id列,因?yàn)槊總€(gè)員工的員工編號(hào)是惟一的。因此每個(gè)員工可以被惟一區(qū)分,這個(gè)惟一屬性列被稱為主關(guān)鍵字或主鍵,主碼。第二範(fàn)式要求實(shí)體的屬性完全依賴於主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那麼這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來,形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間是一對(duì)多的關(guān)係。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)。簡而言之第二範(fàn)式就是非主屬性非部分依賴於主關(guān)鍵字2.4.3第三範(fàn)式3NF滿足第三範(fàn)式,
必須先滿足第二範(fàn)式。
第三範(fàn)式要求一個(gè)資料庫表中不包含已在其他表中已包含的非主關(guān)鍵字資訊。例如存在一個(gè)部門資訊表,其中每個(gè)部門有部門編號(hào)dept_id,部門名稱,部門簡介等資訊。那麼在前面的員工資訊表中,列出部門編號(hào)後就不能再將部門名稱,部門簡介等與部門有關(guān)的資訊再加入員工資訊表中。如果不存在部門資訊表,則根據(jù)第三範(fàn)式,
也應(yīng)該構(gòu)建它;否則就會(huì)有大量的數(shù)據(jù)冗餘。簡而言之,第三範(fàn)式就是屬性不依賴於其他非主屬性。87基本概念備份和恢復(fù)組件是SQLServer的重要組成部分。備份就是指對(duì)SQLServer資料庫或事務(wù)日誌進(jìn)行拷貝。資料庫備份記錄了在進(jìn)行備份這一操作時(shí)資料庫中所有數(shù)據(jù)的狀態(tài)。如果資料庫因意外而損壞,這些備份檔將在資料庫恢復(fù)時(shí)被用來恢復(fù)資料庫。由於SQLServer支持線上備份,所以通常情況下,可一邊進(jìn)行備份一邊進(jìn)行其他操作。但是在備份過程中不允許執(zhí)行以下操作:創(chuàng)建或刪除資料庫檔創(chuàng)建索引執(zhí)行非日誌操作自動(dòng)或手工縮小資料庫或資料庫檔大小88備份設(shè)備在進(jìn)行備份以前首先必須指定或創(chuàng)建備份設(shè)備,備份設(shè)備是用來存儲(chǔ)資料庫、事務(wù)日誌或檔和文件組備份的存儲(chǔ)介質(zhì),備份設(shè)備可以是硬碟、磁帶或管道。當(dāng)使用磁片時(shí),SQLServer允許將本地主機(jī)硬碟和遠(yuǎn)程主機(jī)上的硬碟作為備份設(shè)備,備份設(shè)備在硬碟中是以檔的方式存儲(chǔ)的。89物理設(shè)備和邏輯設(shè)備SQLServer使用物理設(shè)備或邏輯設(shè)備名稱標(biāo)識(shí)備份設(shè)備。物理備份設(shè)備是操作系統(tǒng)用來標(biāo)識(shí)備份設(shè)備的名稱。如c:\backups\accounting\full.bak。邏輯備份設(shè)備是用來標(biāo)識(shí)物理備份設(shè)備的別名或公用名稱。邏輯設(shè)備名稱永久地存儲(chǔ)在SQLServer內(nèi)地系統(tǒng)表中。優(yōu)點(diǎn)是:引用它比引用物理設(shè)備名稱簡單。例:上例的邏輯設(shè)備名稱可以是:accounting_backup。執(zhí)行數(shù)據(jù)庫的備份和恢復(fù)中,既可以使用物理設(shè)備名,又可以使用邏輯設(shè)備名。90例:backupdatabaseaccountingtoaccountin_backup或BackupdatabaseaccountingTodisk=‘c:\backups\acounting\full.bak’91管理備份設(shè)備可以採用企業(yè)管理器,也可以採用T-SQL語句來實(shí)現(xiàn)管理。92用企業(yè)管理器創(chuàng)建備份設(shè)備步驟:1、打開企業(yè)管理器,展開指定的伺服器。2、展開“管理”節(jié)點(diǎn),並在下一級(jí)節(jié)點(diǎn)中選擇節(jié)點(diǎn)“備份”。3、在備份節(jié)點(diǎn)上單擊滑鼠右鍵,然後從彈出菜單中選擇命令“新建備份設(shè)備”,並打開“備份設(shè)備屬性-新設(shè)備”對(duì)話框。4、在“備份設(shè)備屬性”對(duì)話框中執(zhí)行如下操作:在“名稱”處輸入備份設(shè)備的邏輯檔案名在“檔案名”處輸入備份檔的檔案名和存儲(chǔ)路徑。5、單擊“確定”,即可。93圖1使用企業(yè)管理器創(chuàng)建備份設(shè)備94圖2輸入備份設(shè)備屬性對(duì)話框95使用T-SQL創(chuàng)建備份設(shè)備在SQLServer中,可以使用sp_addumpdevice語句創(chuàng)建備份設(shè)備,其語法形式如下:sp_addumpdevice‘設(shè)備類型’,’設(shè)備邏輯名’,’設(shè)備的物理名稱’例:execsp_addumpdevice‘disk’,‘backup_company’,‘c:\mssql7\backup\bk_company.bak’96刪除備份設(shè)備刪除備份設(shè)備與創(chuàng)建的過程類似,只須在企業(yè)管理器中選中要?jiǎng)h除的備份設(shè)備,在彈出的菜單中選擇刪除選項(xiàng)即可刪除該備份設(shè)備?;蛘呤褂胹p_dropdevice語句來刪除備份設(shè)備。其語法如下:sp_dropdevice‘設(shè)備的邏輯名稱’,’delfile’其中:delfile用來指出是否要?jiǎng)h除物理備份設(shè)備檔。如指定delfile,則會(huì)刪除物理備份設(shè)備磁片檔。例子4-6:刪除上面創(chuàng)建的備份設(shè)備sp_dropdevice‘backup_company’
或
sp_dropdevice‘backup_company’
,‘delfile’97SQLServer2000四種備份方式(一)資料庫備份(二)差異備份或稱增量備份(三)事務(wù)日誌備份(四)資料庫檔和文件組備份98資料庫備份資料庫備份一般實(shí)用於數(shù)據(jù)更新緩慢的資料庫中,備份將創(chuàng)建當(dāng)備份完成時(shí)資料庫記憶體在的數(shù)據(jù)的副本。與事務(wù)日誌備份和差異資料庫備份相比,資料庫備份中的每個(gè)備份使用的存儲(chǔ)空間更多。因此,資料庫備份完成備份操作需要更多的時(shí)間,所有,資料庫備份的創(chuàng)建頻率通常比差異資料庫或事務(wù)日誌備份低。還原資料庫時(shí),備份將重新創(chuàng)建當(dāng)資料庫和備份完成時(shí)資料庫中存在的所有相關(guān)檔。但是,自從創(chuàng)建備份後所作的所有資料庫修改都將丟失。若要還原創(chuàng)建資料庫備份後發(fā)生的事務(wù),必須使用事務(wù)日誌備份或差異備份。99備份資料庫和事務(wù)日誌事務(wù)日誌備份是指對(duì)數(shù)據(jù)庫發(fā)生的事務(wù)進(jìn)行備份。包括從上次進(jìn)行事務(wù)日誌備份、差異備份和數(shù)據(jù)庫完全備份之後所有已經(jīng)完成的事務(wù)。還原事務(wù)日誌備份時(shí),SQLServer將按照事務(wù)日誌中的記錄修改資料庫。當(dāng)修改完成時(shí),SQLServer已經(jīng)重新創(chuàng)建了與開始執(zhí)行備份操作的那一刻完全相同的資料庫狀態(tài)。一般事務(wù)日誌比資料庫備份使用的資源少。因此可以經(jīng)常創(chuàng)建事務(wù)日誌備份。只有具有自上次資料庫備份或差異資料庫備份後的連續(xù)事務(wù)日誌備份時(shí),使用資料庫備份和事務(wù)日誌備份還原資料庫才有效。若日誌備份丟失或損壞,必須創(chuàng)建資料庫備份或差異資料庫備份並再次開始備份事務(wù)日誌。100差異備份差異備份是指將最近一次數(shù)據(jù)庫備份以來發(fā)生的數(shù)據(jù)變化備份起來。因此差異備份實(shí)際上是一種增量資料庫備份,與完整資料庫備份相比:差異備份由於備份的數(shù)據(jù)量較小,所以備份和恢復(fù)所用的時(shí)間較短。通過增加差異備份的備份次數(shù),可以降低丟失數(shù)據(jù)的風(fēng)險(xiǎn),將資料庫恢復(fù)至進(jìn)行最後一次差異備份的時(shí)刻,但是它無法像事務(wù)日誌備份那樣提供到失敗點(diǎn)的無數(shù)據(jù)損失備份。101檔和文件組備份檔或檔組備份是一種相對(duì)較完善的備份和還原過程,通常用在具有較高可用性要求的超大型資料庫中。這種備份策略可以只還原已損壞的檔或檔組,而不用還原資料庫的其餘部分,從而加快了恢復(fù)速度。102資料庫恢復(fù)簡單恢復(fù)完全恢復(fù)大容量日誌記錄恢復(fù)103簡單恢復(fù)所謂簡單恢復(fù)就是指在進(jìn)行資料庫恢復(fù)時(shí),僅使用了資料庫備份或差異備份,而不涉及事務(wù)日誌備份。簡單恢復(fù)模式可使資料庫恢復(fù)到上一次備份的狀態(tài),但由於不使用事務(wù)日誌備份來進(jìn)行恢復(fù),所以無法將資料庫恢復(fù)到失敗點(diǎn)狀態(tài)。當(dāng)選擇簡單恢復(fù)模式,時(shí)常使用的備份策略是首先進(jìn)行資料庫備份,然後進(jìn)行差異備份。104完全恢復(fù)完全資料庫恢復(fù)模式是指通過使用資料庫備份和事務(wù)日誌備份將資料庫恢復(fù)到發(fā)生失敗的時(shí)刻,因此幾乎不造成任何數(shù)據(jù)丟失。這成為對(duì)付因存儲(chǔ)介質(zhì)損壞而數(shù)據(jù)丟失的最佳方法。為了保證資料庫的這種恢復(fù)能力,所有的批數(shù)據(jù)操作,比如SELECTINGO、創(chuàng)建索引都被寫入日誌檔。選擇完全恢復(fù)模式時(shí)常使用的備份策略是:首先進(jìn)行完全資料庫備份然後進(jìn)行差異資料庫備份最後進(jìn)行事務(wù)日誌的備份如果準(zhǔn)備讓資料庫恢復(fù)到失敗時(shí)刻,必須對(duì)數(shù)據(jù)庫失敗前正處於運(yùn)行狀態(tài)的事務(wù)進(jìn)行備份。105大容量日誌記錄恢復(fù)大容量日誌恢復(fù)在性能上要優(yōu)於簡單恢復(fù)和完全恢復(fù)模式。它能盡最大努力減少批操作所需要的存儲(chǔ)空間。這些批操作主要是SELECTINTO、批裝載操作(如bcp操作或批插入操作)、創(chuàng)建索引、針對(duì)大文本或圖像的操作。選擇批日誌恢復(fù)模式所採用的備份策略與完全恢復(fù)所採用的恢復(fù)策略基本相同。在實(shí)際應(yīng)用中備份策略和恢復(fù)策略的選擇不是相互孤立的而是有著緊密的聯(lián)繫。我們並不僅僅是因?yàn)橘Y料庫備份為數(shù)據(jù)庫恢復(fù)提供了”原材料”這一事實(shí),以便在採用何種資料庫恢復(fù)模式的決策中考慮該怎樣進(jìn)行資料庫備份。更多是因?yàn)樵谶x擇該使用哪種備份類型時(shí)我們必須考慮到當(dāng)使用該備份進(jìn)行資料庫恢復(fù)時(shí),它能把遭到損壞的資料庫帶到怎樣的狀態(tài)(是資料庫失敗的時(shí)刻,還是最近一次備份的時(shí)刻)。但有一點(diǎn)我們必須強(qiáng)調(diào),即備份類型的選擇和恢復(fù)模式的確定都應(yīng)服從於這一目標(biāo):盡最大可能,以最快速度減少或消滅數(shù)據(jù)丟失。1061.使用企業(yè)管理器進(jìn)行備份(1)啟動(dòng)企業(yè)管理器,登錄到指定的資料庫伺服器,打開資料庫檔夾,用右鍵單擊所要進(jìn)行備份的資料庫圖示,在彈出的快捷菜單中選擇所有任務(wù),再選擇備份資料庫。(2)出現(xiàn)SQLServer備份對(duì)話框,對(duì)話框中有兩個(gè)頁框,即常規(guī)和選項(xiàng)頁框。(3)在常規(guī)頁框中,選擇備份資料庫的名稱、操作的名稱、描述資訊、備份的類型、備份的介質(zhì)、備份的執(zhí)行時(shí)間。(4)通過單擊添加按鈕選擇備份設(shè)備。(5)選擇調(diào)度複選框,來改變備份的時(shí)間安排。(6)在選項(xiàng)頁框中進(jìn)行附加設(shè)置。1072.使用備份嚮導(dǎo)(圖1--圖7)圖1歡迎使用嚮導(dǎo)對(duì)話框108圖2選擇資料庫對(duì)話框109圖3輸入備份名稱和描述資訊對(duì)話框110圖4選擇備份資料庫類型對(duì)話框111圖5設(shè)置備份介質(zhì)類型和屬性對(duì)話框112圖6備份驗(yàn)證和調(diào)度對(duì)話框113圖7確認(rèn)執(zhí)行備份操作對(duì)話框114恢復(fù)概述資料庫備份後,一旦系統(tǒng)發(fā)生崩潰或者執(zhí)行了錯(cuò)誤的資料庫操作,就可以從備份檔中恢復(fù)資料庫。資料庫恢復(fù)是指將資料庫備份加載到系統(tǒng)中的過程。系統(tǒng)在恢復(fù)資料庫的過程中,自動(dòng)執(zhí)行安全性檢查、重建資料庫結(jié)構(gòu)以及完整資料庫內(nèi)容。115使用企業(yè)管理器恢復(fù)資料庫使用企業(yè)管理器恢復(fù)資料庫(1)打開企業(yè)管理器,單擊要登錄的資料庫伺服器,然後從主菜單中選擇工具,在菜單中選擇還原資料庫命令。(2)在還原為數(shù)據(jù)庫旁的下拉列表中選擇要恢復(fù)的資料庫,在還原組中通過單擊單選按鈕來選擇相應(yīng)的資料庫備份類型。(3)選中選項(xiàng)頁框,進(jìn)行其他選項(xiàng)的設(shè)置116使用Transact-SQL備份資料庫包括如下幾個(gè)方面:完全資料庫備份差異資料庫備份事務(wù)處理日誌備份檔和文件組備份117執(zhí)行完全資料庫備份可以使用新建一個(gè)備份檔,也可以使用一個(gè)已經(jīng)存在的備份設(shè)備。Backupdatabasecompanytodisk=‘c:\sqlbackup\company.bak’118差異資料庫備份例如:backupdatabasecompanytocompany_backupwithdifferential注意:差異備份資料庫備份必須在存在完全資料庫備份以後執(zhí)行。119事務(wù)處理日誌備份語法規(guī)則如下:BACKUPLOG{database_name|@database_name_var}TO<backup_device>[...n]例:backuplogcompanytocompany_log_backup例:Backuplogcompanytocompany_log_backupwithno_truncate其中:withno_truncate參數(shù)指定在完成事務(wù)日誌備份以後,並不清空原有日誌的數(shù)據(jù)。120執(zhí)行檔和文件組備份語法為:語法格式如下BACKUPDATABASE{database_name|@database_name_var}<file_or_filegroup>[...n]TO<backup_device>[...n]例:backupdatabasecompanyfilegroup=‘primary’tocompany_filegroupbackup_primary121使用T-SQL語句恢復(fù)資料庫利用資料庫備份執(zhí)行恢復(fù)操作的語法格式:RESTOREDATABASE資料庫名[FROM備份設(shè)備名[...n]][WITH[[,]{nonrecovery|recovery}][[,]replace]]其中:nonrecovery|recovery參數(shù)用於指定恢復(fù)操作是否回滾所有未曾提交的事務(wù),默認(rèn)選項(xiàng)為recovery。在使用一個(gè)資料庫備份和多個(gè)事務(wù)日誌進(jìn)行恢復(fù)時(shí),在恢復(fù)最後一個(gè)事務(wù)日誌檔以前都應(yīng)該使用參數(shù)nonrecovery。參數(shù)replace指定恢復(fù)操作是否替換原來的資料庫或數(shù)據(jù)檔和文件組。122資料庫備份的恢復(fù)RESTOREDATABASE資料庫名[FROM備份設(shè)備名[...n]][WITH[[,]{nonrecovery|recovery}][[,]replace]]其中:nonrecovery|recovery參數(shù)用於指定恢復(fù)操作是否回滾所有未曾提交的事務(wù),默認(rèn)未recovery。參數(shù)replace指定恢復(fù)操作是否替換為原來的資料庫或數(shù)據(jù)檔和文件組。123事務(wù)日誌備份的恢復(fù)利用事務(wù)日誌備份執(zhí)行恢復(fù)資料庫的語法:RESTORELOG資料庫名[FROM備份設(shè)備名[...n]][WITH[[,]{nonrecovery|recovery}][[,]STOPAT=date_time]]其中:參數(shù)STOPAT=date_time用來指定資料庫恢復(fù)到一個(gè)特定的時(shí)間點(diǎn)。124檔和文件組備份的恢復(fù)利用檔和文件組備份恢復(fù)資料庫的語法:RESTOREDATABASE資料庫名{FILE=邏輯檔案名|FILEGROUP=邏輯檔組名』[FROM備份設(shè)備名[...n]][WITH[[,]{nonrecovery|recovery}][[,]replace]]125例:從磁片上的備份檔d:\sqlbackup\company.bak中恢復(fù)資料庫company的一個(gè)完整資料庫備份Restoredatabasecompanyfromdisk=‘d:\sqlbackup\company.bak’126例:Restoredatabasecompanyfromcompany_backupwithnonrecoveryRestorelogcompanyfromcompany_laobackup1withnonrecoveryRestorelogcompanyfromcompany_logbackupwithrecovery,Stopat=‘oct5,19996:0005PM’是一個(gè)資料庫備份和兩個(gè)事務(wù)日誌的資料庫的恢復(fù)操作,使用stopat參數(shù)將資料庫恢復(fù)到一個(gè)指定的時(shí)間點(diǎn)。127例:從備份設(shè)備中恢復(fù)資料庫:從backup_company備份設(shè)備中恢復(fù)資料庫company。usemasterrestoredatabasecompanyfrombackup_company128例:下麵是一個(gè)資料庫備份和兩個(gè)事務(wù)日誌進(jìn)行了資料庫的恢復(fù)操作,並使用stopat參數(shù)將資料庫恢復(fù)到一個(gè)指定的時(shí)間點(diǎn)。RestoredatabasecompanyFromcompany_backupwithnonrecoveryRestorelogcompanyFromcompany_logbackup1withnonrecoveryResotrelogcompanyFromcompany_logbackupwithrecovery,Stopat=‘oct5,19996:00:05PM’129創(chuàng)建表在SQLServer2000中,每個(gè)資料庫中最多可以創(chuàng)建200萬個(gè)表,用戶創(chuàng)建資料庫表時(shí),最多可以定義1024列,也就是可以定義1024個(gè)字段。
SQLServer2000提供了兩種方法創(chuàng)建資料庫表,第一種方法是利用企業(yè)管理器(EnterpriseManager)創(chuàng)建表;另一種方法是利用Transact-SQL語句中的create命令創(chuàng)建表。130利用企業(yè)管理創(chuàng)建表在EnterpriseManager中,展開指定的伺服器和數(shù)據(jù)庫,打開想要?jiǎng)?chuàng)建新表的資料庫,用右鍵單擊表對(duì)象,從彈出的快捷菜單中選擇新建表選項(xiàng),或者在工具欄中選擇圖示,就會(huì)出現(xiàn)新建表對(duì)話框,在該對(duì)話框中,可以定義列的以下屬性:列名稱、數(shù)據(jù)類型、長度、精度、小數(shù)位數(shù)、是否允許為空、缺省值、標(biāo)識(shí)列、標(biāo)識(shí)列的初始值、標(biāo)識(shí)列的增量值和是否有行的標(biāo)識(shí)。然後根據(jù)提示進(jìn)行設(shè)置,並且保存表。131常用屬性說明長度:指定字段的長度,即字段所佔(zhàn)用的位元組數(shù)。字段的長度並非越打越好。允許空:指定該字段在表中是否允許空值??罩当硎緵]有輸入,並不等於零或零長度的字串。若指定一列不允許空值,則在相表中寫數(shù)據(jù)時(shí)必須在列中輸入一個(gè)值,否則該行不被接收如數(shù)據(jù)庫。描述:指定字段的注釋文本描述。默認(rèn)值:指定字段的默認(rèn)值,指在插入記錄時(shí),沒有指定字段值的情況下,自動(dòng)使用的默認(rèn)值。132精度:指定該字段的位數(shù)。對(duì)於decimal和numeric類型的字段,可以設(shè)置精度屬性。小數(shù)位數(shù):顯示該列值小數(shù)點(diǎn)右邊能出現(xiàn)的最多數(shù)字個(gè)數(shù)。標(biāo)識(shí):指定一個(gè)字段是否為標(biāo)識(shí)字段。只有bigint、int、smallint、tinyint、decimal和numeric可以設(shè)置該屬性??赡艿闹凳牵?、否:不設(shè)置該字段為標(biāo)識(shí)字段。2、是:指定該字段為標(biāo)識(shí)字段。表示在插入一個(gè)新的數(shù)據(jù)行時(shí),不必為字段指定數(shù)值,系統(tǒng)會(huì)根據(jù)標(biāo)識(shí)種子和標(biāo)識(shí)遞增量自動(dòng)生成一個(gè)字段值。3、是(不適用於複製):類似於第二個(gè),但是若以複製的方式象表中輸入數(shù)據(jù),系統(tǒng)將不自動(dòng)生成字段值。133標(biāo)識(shí)種子:指定標(biāo)識(shí)字段的初始值。標(biāo)識(shí)遞增量:指定標(biāo)識(shí)字段的遞增值。該選項(xiàng)只使用於其“標(biāo)識(shí)”屬性設(shè)置為“是”或“是(不適用於複製)”的字段。在一個(gè)表中,只能定義一個(gè)標(biāo)識(shí)字段。公式:指定用於計(jì)算字段的公式排序規(guī)則:指定當(dāng)字段值用於對(duì)查詢結(jié)果的記錄進(jìn)行排序時(shí)的排序規(guī)則,默認(rèn)情況下使用資料庫默認(rèn)設(shè)置。134向表中添加數(shù)據(jù)步驟如下:1、選擇要添加數(shù)據(jù)的表2、選擇菜單“操作-打開表-返回所有行”命令,打開數(shù)據(jù)輸入窗口。3、輸入新記錄,同時(shí)可以修改和刪除操作。4、保存輸入。135表操作——?jiǎng)?chuàng)建表同一用戶不能建立同一個(gè)表名的表,同一表名的表可有多個(gè)擁有者。但在使用時(shí),需要在這些表上加上所有者的表名。136利用create命令創(chuàng)建表其語法形式如下:CREATETABLE
[database_name.[owner].|owner.]table_name
({<column_definition>|column_nameAScomputed_column_expression|<table_constraint>}[,…n])
[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]<column_definition>::={column_namedata_type}[[DEFAULTconstant_expression]|[IDENTITY[(seed,increment)]][<column_constraint>][...n]137database_name:用於指定在其中創(chuàng)建表的資料庫名稱。owner:用於指定新建表的所有者的用戶名。table_name:用於指定新建的表的名稱。column_name:用於指定新建表的列的名稱。computed_column_expression:用於指定計(jì)算列的列值的運(yùn)算式。ON{filegroup|DEFAULT}:用於指定存儲(chǔ)表的檔組名。如果指定filegroup,則數(shù)據(jù)表將存儲(chǔ)在指定的檔組中。若指定default,或未指定on參數(shù),則數(shù)據(jù)表將存儲(chǔ)在默認(rèn)檔組中。138TEXTIMAGE_ON:用於指定text、ntext和image列的數(shù)據(jù)存儲(chǔ)的檔組。data_type:用於指定列的數(shù)據(jù)類型。DEFAULT:用於指定列的缺省值。constant_expression:用於指定列的缺省值的常量運(yùn)算式。IDENTITY:用於指定列為標(biāo)識(shí)列。Seed:用於指定標(biāo)識(shí)列的初始值。Increment:用於指定標(biāo)識(shí)列的增量值。column_constraint和table_constraint:用於指定列約束和表約束。139例:創(chuàng)建一個(gè)雇員資訊表其SQL語句的程式清單如下:
CREATETABLEemployee(numberintnotnull,namevarchar(20)NOTNULL,sexchar(2)NULL,birthdaydatetimenull,hire_datedatetimeNOTNULLDEFAULT(getdate())professional_titlevarchar(10)null,salarymoneynull,memontextnull)140約束主鍵約束唯一性約束外鍵約束核查約束Null約束和default約束141在企業(yè)管理器中設(shè)置主鍵約束主鍵可以用來強(qiáng)制一個(gè)字段或多個(gè)字段組合值的唯一性,且不允許該字段值為空值。具體步驟如下:1、選中需要設(shè)置的表節(jié)點(diǎn)。2、在該表節(jié)點(diǎn)處,點(diǎn)擊右鍵,並選擇“設(shè)計(jì)表”選項(xiàng)。3、選中需要設(shè)置主鍵的字段,然後點(diǎn)擊菜單上的設(shè)置主鍵按鈕,即可。在一個(gè)表中只能設(shè)置一個(gè)主鍵約束,但可以將包含多個(gè)字段的字段組合設(shè)置為主鍵,設(shè)置時(shí)需要按住ctrl鍵將多個(gè)字段選中,然後按照和設(shè)置單字段主鍵相同的方法設(shè)置即可。取消方法與設(shè)置類似。142在T-SQL中設(shè)置主鍵約束為數(shù)據(jù)表創(chuàng)建主鍵約束的句法如下:[constraintconstraint_name]Primarykey[clustered|notclustered][(字段名[,…n])]其中:constraint_name約束名稱。若缺省,系統(tǒng)將會(huì)自動(dòng)為創(chuàng)建的約束命名。CLUSTERED|NONCLUSTERED:用於指定約束的類型,即聚集約束或非聚集約束,CLUSTERED為默認(rèn)值。column_name:用於指定主鍵的列名。主鍵最多由16個(gè)列組成。143主鍵約束分為字段級(jí)約束和表級(jí)約束。字段級(jí)約束:為某一個(gè)字段設(shè)置約束。在設(shè)置字段級(jí)約束時(shí),只需將創(chuàng)建主鍵約束的語句添加到該字段的定義子句後面。例:Createtableproject(專案編號(hào)intconstraintpk_pnoprimarykey,專案名稱varchar(40))144表級(jí)約束:指將包含多個(gè)字段的字段組合設(shè)置為主鍵。設(shè)置表級(jí)約束時(shí),需要將創(chuàng)建主鍵約束的語句添加到各個(gè)字段定義語句的後面,並在該語句後面的括弧中寫入字段組合包含的所有字段,字段之間用逗號(hào)分隔。例如:Createtableproject(專案編號(hào)int,專案名稱varchar(40),Constraintpk_pno_pnameprimarykey(專案編號(hào),專案名稱))145唯一性約束在一個(gè)表中只能設(shè)置一個(gè)主鍵約束,如何限制非主鍵字段輸入值的唯一性呢?唯一性約束的設(shè)置可以確保在非主關(guān)鍵字段或字段組合中不輸入重複值。唯一性約束和主鍵約束的區(qū)別:1、在一個(gè)表中只能定義一個(gè)主鍵約束,但可以定義多個(gè)唯一性約束。2、允許空值的字段上不能定義主鍵約束,但可以定義唯一性約束。146在企業(yè)管理器中設(shè)置唯一性約束步驟如下:1、為設(shè)置唯一性約束的表打開表設(shè)計(jì)器,選擇工具欄中的“表和索引屬性”按鈕,打開表的屬性窗口。2、選擇“索引/鍵”選項(xiàng)。3、選擇“新建”命令。為該表創(chuàng)建新的索引,此時(shí)系統(tǒng)分配的名稱出現(xiàn)在“索引名”框中。4、在“列名”下展開字段的列表,選擇需要附加約束的字段。若要將約束附加到多個(gè)字段,在後續(xù)行中選擇其他的字段。5、選擇“創(chuàng)建unique”複選項(xiàng)。6、選擇“約束選項(xiàng)”,將在該字段上同時(shí)創(chuàng)建一個(gè)唯一性索引。7、保存表147唯一性約束的刪除若想刪除唯一性約束,可以在“索引/鍵”選項(xiàng)中選擇索引名,然後選擇“刪除”命令。148在T-SQL中設(shè)置唯一性約束設(shè)置唯一性約束的句法如下:[CONSTRAINTconstraint_name]UNIQUE[CLUSTERED|NONCLUSTERED][(字段名[,…n])]149例如:創(chuàng)建一個(gè)名為project的表,該表包含二個(gè)字段“專案編號(hào)”和“專案名稱”,將字段“專案編號(hào)”設(shè)置為主鍵,主鍵約束名為pk_Pno,為字段“專案名稱”設(shè)置唯一性約束,約束名為UN_pname:Createtableproject(專案編號(hào)intconstraintpk_pnoprimarykey,專案名稱char(20)constraintun_pnameunique)150例:創(chuàng)建一個(gè)名為project的表,該表包含3個(gè)字段“專案編號(hào)”、“專案名稱”和“專案負(fù)責(zé)人”,將字段“專案編號(hào)”設(shè)置為主鍵,主鍵約束名為pk_pno,為包含字段“專案名稱”和“專案負(fù)責(zé)人”的組合字段設(shè)置唯一性約束,約束名為un_pname_pm。下麵是用來完成這一任務(wù)的語句:Createtableproject(專案編號(hào)intConstraintpk_pnoprimarykey,專案名稱char(20),專案負(fù)責(zé)人char(20),Constraintun_pname_pmunique(專案名稱,專案負(fù)責(zé)人))151外鍵約束外關(guān)鍵字約束定義了表之間的關(guān)係。當(dāng)一個(gè)表中的一個(gè)列或多個(gè)列的組合和其他表中的主關(guān)鍵字定義相同時(shí),就可以將這些列或列的組合定義為外關(guān)鍵字,並設(shè)定它是和哪個(gè)表中哪些列相關(guān)聯(lián)。這樣,當(dāng)在定義主關(guān)鍵字約束的表中更新列值時(shí),其他表中有與之相關(guān)聯(lián)的外關(guān)鍵字約束的表中的外關(guān)鍵字列也將被相應(yīng)地做相同的更新。外關(guān)鍵字約束的作用還體現(xiàn)在,當(dāng)向含有外關(guān)鍵字的表插入數(shù)據(jù)時(shí),如果與之相關(guān)聯(lián)的表的列中沒有與插入的外關(guān)鍵字列值相同的值時(shí),系統(tǒng)會(huì)拒絕插入數(shù)據(jù)。152步驟如下:1、打開企業(yè)管理器,展開資料庫company節(jié)點(diǎn)。2、在資料庫company的下一級(jí)中,右擊“關(guān)係圖”,在彈出菜單中選擇“新建資料庫關(guān)係圖”命令。3、關(guān)閉創(chuàng)建資料庫關(guān)係圖嚮導(dǎo),進(jìn)入資料庫關(guān)係圖創(chuàng)建窗口。4、在資料庫關(guān)係圖創(chuàng)建窗口的工具欄中單擊按鈕“在關(guān)係圖上加表”按鈕。打開“添加表”窗口。5、在“添加表”窗口中選擇主鍵表employee,並單擊“添加”按鈕,再選擇外鍵表project,單擊“添加”按鈕,然後關(guān)閉“添加表”窗口。1536、將滑鼠指針移動(dòng)到employee表中主關(guān)鍵字段“編號(hào)”左邊的選擇欄,按下滑鼠左鍵,並將滑鼠指針拖動(dòng)到project表中字段“負(fù)責(zé)人編號(hào)”上。7、鬆開滑鼠左鍵,此時(shí)彈出“創(chuàng)建關(guān)係”對(duì)話框。根據(jù)需要決定是否選擇對(duì)話框中的如下選項(xiàng):8、設(shè)置完這些選項(xiàng)以後,單擊“確定”按鈕,關(guān)閉“創(chuàng)建關(guān)係”對(duì)話框。此時(shí)創(chuàng)建資料庫關(guān)係圖窗口中的二個(gè)表之間出現(xiàn)一條連接線,表示已經(jīng)建立了這個(gè)關(guān)係。9、單擊“保存”按鈕,在“另存為”窗口中輸入關(guān)係名,單擊“確定”按鈕。10、在“保存”對(duì)話框中,單擊“是”按鈕確認(rèn)對(duì)主鍵表和外鍵表所作的修改。154刪除外鍵約束若想刪除該外鍵約束,可以在關(guān)係圖中,刪除代表要?jiǎng)h除的外鍵約束的關(guān)係線。注意:若不刪除資料庫圖中的關(guān)係線,即使刪除了該關(guān)係圖,也不會(huì)影響設(shè)置好的外鍵約束,因?yàn)閯h除關(guān)係圖並不對(duì)表作相應(yīng)的修改。155在T-SQL中設(shè)置外鍵約束定義外關(guān)鍵字約束的語法如下:[CONSTRAINTconstraint_name][FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]各參數(shù)說明如下:REFERENCES:指定要建立關(guān)聯(lián)的表的資訊ref_table:指定要建立關(guān)聯(lián)的表的名稱ref_column:指定要建立關(guān)聯(lián)的表中的相關(guān)列的名稱156ONDELETE{CASCADE|NOACTION}:指定在刪除表中數(shù)據(jù)時(shí),對(duì)關(guān)聯(lián)表所做的相關(guān)操作。在子表中有數(shù)據(jù)行與父表中的對(duì)應(yīng)數(shù)據(jù)行相關(guān)聯(lián)的情況下,如果指定了值CASCADE,則在刪除父表數(shù)據(jù)行時(shí),會(huì)將子表中對(duì)應(yīng)的數(shù)據(jù)行刪除。如果指定的是NOACTION,則SQLServer會(huì)產(chǎn)生一個(gè)錯(cuò)誤,並將父表中的刪除操作回滾。NOACTION是缺省值ONUPDATE{CASCADE|NOACTION}:指定在更新表中數(shù)據(jù)時(shí),對(duì)關(guān)聯(lián)表所做的相關(guān)操作。在子表中有數(shù)據(jù)行與父表中的對(duì)應(yīng)數(shù)據(jù)行相關(guān)聯(lián)的情況下,如果指定了值CASCADE,則在更新父表數(shù)據(jù)行時(shí)會(huì)將子表中對(duì)應(yīng)的數(shù)據(jù)行更新;如果指定的是NOACTION,則SQLServer會(huì)產(chǎn)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 超聲科在婦產(chǎn)科的臨床應(yīng)用
- 理財(cái)工具的選擇與使用計(jì)劃
- 安全知識(shí)普及的重要性計(jì)劃
- 財(cái)務(wù)管理軟件在教育培訓(xùn)領(lǐng)域的應(yīng)用
- 音樂與節(jié)奏增強(qiáng)匯報(bào)效果的隱秘武器
- 跨國公司如何設(shè)計(jì)區(qū)域采購的質(zhì)量管理體系
- 質(zhì)量管理與組織結(jié)構(gòu)的關(guān)系及影響
- 青海2025年02月青海省省直機(jī)關(guān)度公開遴選119名公務(wù)員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 金融投資中的血象指標(biāo)分析
- 吉林2025年01月吉林省四平市2025年引進(jìn)100名碩士博士專業(yè)人才筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 重慶市南開名校2024-2025學(xué)年八年級(jí)下學(xué)期開學(xué)考試物理試題(含答案)
- 滲漉法胡鵬講解
- 2025年交管12123學(xué)法減分試題庫附參考答案
- 2025年360億方智能航空AI白皮書-愛分析
- 【道 法】學(xué)會(huì)自我保護(hù)+課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊
- 事業(yè)編 合同范例
- 福建省廈門市第一中學(xué)2023-2024學(xué)年高二上學(xué)期開學(xué)考試英語試題(解析版)
- 2025屆高考英語讀后續(xù)寫提分技巧+講義
- 買房協(xié)議書樣板電子版
- 2024年無錫科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 2025年山東新華書店集團(tuán)限公司臨沂市縣分公司招聘錄取人員高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論