版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
SQLServer實(shí)例教程(2019版)游標(biāo)、事務(wù)和鎖第十章”十四五”職業(yè)教育國家規(guī)劃教材01游標(biāo)游標(biāo)01游標(biāo)概述游標(biāo)通過以下方式擴(kuò)展結(jié)果集的處理。(1)允許定位在結(jié)果集的特定行。(2)從結(jié)果集的當(dāng)前位置檢索-行或多行。(3)支持對結(jié)果集中當(dāng)前位置的行進(jìn)行數(shù)據(jù)修改。在SQLServer2019中使用游標(biāo)的一般步驟如下。(1)聲明游標(biāo)(DECLARECURSOR)。(2)打開游標(biāo)(OPENCURSOR)。(3)提取游標(biāo)(FETCHCURSOR)。(4)根據(jù)需要,對游標(biāo)中當(dāng)前位置的行執(zhí)行修改操作(更新或刪除)。(5)關(guān)閉游標(biāo)(CLOSECURSOR)。(6)釋放游標(biāo)(DEALLOCATECURSOR)。游標(biāo)01游標(biāo)概述(1)DECLARECURSOR。聲明游標(biāo),定義T-SQL服務(wù)器游標(biāo)的屬性,如游標(biāo)的滾動行為和用于生成游標(biāo)所操作的結(jié)果集的查詢,其基本語句格式如下:參數(shù)含義如下:●
cursor_name:所定義的T-SQL服務(wù)器游標(biāo)名稱;●
SELECTstatement:定義游標(biāo)結(jié)果集的標(biāo)準(zhǔn)SELECT語句。游標(biāo)01游標(biāo)概述(2)OPENCURSOR。打開T-SQL服務(wù)器游標(biāo),然后通過執(zhí)行在DECLARECURSOR或SETcursorvariable語句中指定的T-SQL語句來填充游標(biāo),其基本語句格式如下:游標(biāo)01游標(biāo)概述(3)FETCHCURSOR。提取游標(biāo),從T-SQL服務(wù)器游標(biāo)中檢索特定的一行,其基本語句格式如下:參數(shù)含義如下:●
NEXT:返回緊跟當(dāng)前行之后的結(jié)果行。如果FETCHNEXT為對游標(biāo)的第一次提取操作,則運(yùn)行結(jié)果集中的第一行。游標(biāo)01游標(biāo)概述●
PRIOR:返回緊臨當(dāng)前行前面的結(jié)果行。如果FETCHPRIOR為對游標(biāo)的第一次提取操作,則沒有行返回并且游標(biāo)置于第一行之前?!?/p>
FIRST:返回游標(biāo)中的第一行并將其作為當(dāng)前行?!?/p>
LAST:返回游標(biāo)中的最后一行并將其作為當(dāng)前行?!?/p>
ABSOLUTEn:如果n為正數(shù),返回從游標(biāo)頭開始的第n行并將返回的行變成新的當(dāng)前行。如果n為負(fù)數(shù),返回游標(biāo)尾之前的第n行并將返回的行變成新的當(dāng)前行。如果
n
為0,則沒有行返回。●
RELATIVEn:返回當(dāng)前行之前或之后的第n
行并將返回的行變成新的當(dāng)前行。●
cursorname:要從中提取的游標(biāo)的名稱?!?/p>
INTO@variable_name[,…n]:允許將提取操作的列數(shù)據(jù)放到局部變量中。列表中的各個變量從左到右與游標(biāo)結(jié)果集中的相應(yīng)列相關(guān)聯(lián)。各變量的數(shù)據(jù)類型必須與相應(yīng)的結(jié)果列的數(shù)據(jù)類型匹配。變量的數(shù)目必須與游標(biāo)選擇列表中的列的數(shù)目一致。游標(biāo)01游標(biāo)概述(4)CLOSECURSOR:關(guān)閉游標(biāo),通過釋放當(dāng)前結(jié)果集并且解除定位游標(biāo)的行上的游標(biāo)鎖定。關(guān)閉游標(biāo)后,游標(biāo)可以重新打開,但不允許提取和定位更新,其基本語句格式如下:(5)DEALLOCATECURSOR:刪除游標(biāo),其基本語句格式如下:02事務(wù)事務(wù)02事務(wù)概述事務(wù)是SQLServer中的單個邏輯工作單元,也是一個操作序列,它包含了一組數(shù)據(jù)庫操作命令,所有的命令作為一個整體一起向系統(tǒng)提交或撤銷,如果某一事務(wù)成功,則在該事務(wù)中進(jìn)行的所有數(shù)據(jù)修改均會提交,成為數(shù)據(jù)庫中的永久組成部分。如果事務(wù)遇到錯誤且必須取消或回滾,則所有數(shù)據(jù)修改均被清除。因此,事務(wù)是一個不可分割的工作邏輯單元,在SQLServer中應(yīng)用事務(wù)來保證數(shù)據(jù)庫的一致性和可恢復(fù)性。一個邏輯工作單元必須具備以下四種屬性,也稱為ACID(每種屬性英文名稱的首字母)屬性。事務(wù)02事務(wù)概述(1)原子性。一個事務(wù)必須作為SQLServer工作的原子單位,要么全部執(zhí)行,要么全部取消。(2)一致性。當(dāng)事務(wù)完成后,所有數(shù)據(jù)必須處于一致性(但不相同)狀態(tài),即事務(wù)所修改的數(shù)據(jù)必須遵循數(shù)據(jù)庫中各種約束要求,保持?jǐn)?shù)據(jù)的完整性;在事務(wù)完成時,SQLServer所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如索引與數(shù)據(jù)的連接等)必須得到更新。事務(wù)02事務(wù)概述(3)隔離性。一個事務(wù)所做的修改必須能夠與其他事務(wù)所做的修改隔離開來,即在并發(fā)處理過程中,一個事務(wù)所看到的數(shù)據(jù)狀態(tài)必須為另一個事務(wù)處理前或處理后的數(shù)據(jù),而不能為在正被其他事務(wù)所修改的數(shù)據(jù)。事務(wù)的隔離性通過鎖來實(shí)現(xiàn),在本章的后續(xù)內(nèi)容中還將對隔離進(jìn)行詳細(xì)說明。(4)持久性。事務(wù)完成后,它對數(shù)據(jù)庫所做的修改將被永久保持。事務(wù)日志能夠保證事務(wù)的永久性,SQLServer在每次啟動時,它會自動修復(fù)數(shù)據(jù)庫,并根據(jù)事務(wù)日志回滾所有數(shù)據(jù)庫中未完成的事務(wù)。事務(wù)02自動提交事務(wù)自動提交模式是SQLServer數(shù)據(jù)庫引擎的默認(rèn)事務(wù)管理模式。每個T-SQL語句在完成時,都被提交或回滾。如果一個語句成功完成了,則提交該語句;如果遇到錯誤,則國滾該語句。在自動提交模式下,當(dāng)遇到編譯錯誤時,數(shù)據(jù)庫引擎回滾整個批處理而不僅僅回滾一個SQL語句。編譯錯誤會阻止數(shù)據(jù)庫引擎生成執(zhí)行計劃,這樣批處理中的任何語句都不會執(zhí)行。因此,產(chǎn)生編譯錯誤時,回滾了產(chǎn)生錯誤的語句之前的所有語句,并且該錯誤阻止了批處理中的所有語句的執(zhí)行。事務(wù)02顯式事務(wù)1.定義和提交事務(wù)通常,在程序中用BEGINTRANSACTION命令來標(biāo)識一個事務(wù)的啟動開始,用COMMITTRANSACTION命令標(biāo)識事務(wù)結(jié)束。這兩個命令之間的所有語句被視為一體,即事務(wù)。只有執(zhí)行到COMMTTRANSACTION命令時,事務(wù)中對數(shù)據(jù)庫的更新操作才算確認(rèn),這兩個命令的基本語句格式如下:事務(wù)02顯式事務(wù)2.回滾事務(wù)事務(wù)回滾是指當(dāng)事務(wù)中的某條語句執(zhí)行失敗時,將對數(shù)據(jù)庫的操作恢復(fù)到事務(wù)執(zhí)行前或某個指定位置。事務(wù)回滾使用ROLLBACKTRANSACTION命令,其基本語句格式如下:事務(wù)02顯式事務(wù)2.回滾事務(wù)如果要讓事務(wù)回滾到指定位置,則需要在事務(wù)中設(shè)定事務(wù)保存點(diǎn)。所謂保存點(diǎn),是指定其所在位置之前的事務(wù)語句不能回滾,即此語句前面的操作被視為有效,其基本語句格式加下:事務(wù)02隱式事務(wù)當(dāng)連接以隱性事務(wù)模式進(jìn)行操作時,SQLServer數(shù)據(jù)庫引擎實(shí)例將在提交或回滾當(dāng)前事務(wù)后自動啟動新事務(wù)。不需要描述事務(wù)的開始,只需要提交或回滾每個事務(wù),隱性事務(wù)模式將生成連續(xù)的事務(wù)鏈。將隱性事務(wù)模式設(shè)置為打開之后,當(dāng)數(shù)據(jù)庫引擎實(shí)例首次執(zhí)行某些T-SQL語句時,都會自動啟動一個事務(wù)。首次執(zhí)行時,自動啟動事務(wù)的T-SQL語句如表10-2所示。事務(wù)02隱式事務(wù)在發(fā)出COMMIT語句或ROLLBACK語句之前,該事務(wù)將一直保持有效。在第一個事務(wù)被提交或回滾之后,下次連接執(zhí)行以上任何語句時,數(shù)據(jù)庫引擎實(shí)例都將自動啟動一個新事務(wù)。該實(shí)例將不斷地生成隱性事務(wù)鏈,直到隱性事務(wù)模式關(guān)閉為止。隱性事務(wù)模式既可以使用T-SQL的SET語句來設(shè)置,也可以通過數(shù)據(jù)庫API函數(shù)和方法來設(shè)置。03鎖鎖03并發(fā)問題1.丟失更新當(dāng)兩個或多個事務(wù)選擇同一行,并基于最初選定的值更新該行時,會發(fā)生丟失更新問題。每個事務(wù)都不知道其他事務(wù)的存在,最后的更新將重寫由其他事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。鎖03并發(fā)問題2.未確認(rèn)的相關(guān)性(臟讀)當(dāng)一個事務(wù)正在訪問數(shù)據(jù),對數(shù)據(jù)進(jìn)行了修改,而這種修改還沒有提交到數(shù)據(jù)庫中時,而另外一個事務(wù)也訪問這個數(shù)據(jù),并且使用了這個數(shù)據(jù)。因為這個數(shù)據(jù)是還沒有提交的數(shù)據(jù),那么第二個事務(wù)讀到的這個數(shù)據(jù)就是臟數(shù)據(jù),依據(jù)臟數(shù)據(jù)所做的操作可能是不正確的。鎖03并發(fā)問題3.不一致的分析(非重復(fù)讀)在一個事務(wù)還沒有結(jié)束時,另一個事務(wù)也訪問同一數(shù)據(jù),這樣,在第一個事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個事務(wù)的修改,第一個事務(wù)兩次讀到的數(shù)據(jù)可能是不一致的。這樣就使得第一個事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是不一致的,因此稱為不可重復(fù)讀取。鎖03并發(fā)問題4.幻象讀當(dāng)對某行執(zhí)行插入或刪除操作,而該行屬于某個事務(wù)正在讀取的行的范圍時,會發(fā)生幻象讀問題。事務(wù)第一次讀的行范圍顯示出其中一行已不復(fù)存在于第二次讀或后續(xù)讀中,因為該行已被其他事務(wù)刪除。同樣,由于其他事務(wù)的插入操作,事務(wù)的第二次或后續(xù)讀顯示有一行已不存在于原始讀中。鎖03鎖的類型SQLServer數(shù)據(jù)庫引擎使用不同的鎖模式鎖定資源,這些鎖模式確定了并發(fā)事務(wù)訪問資源的方式。數(shù)據(jù)庫引擎使用的資源鎖模式如表10-3所示。鎖03鎖的類型1.共享鎖共享鎖用于只讀數(shù)據(jù)操作,它允許多個并發(fā)事務(wù)讀取所鎖定的資源,但禁止其他事務(wù)對鎖定資源的進(jìn)行修改操作。默認(rèn)情況下,當(dāng)讀取數(shù)據(jù)的事務(wù)讀完數(shù)據(jù)之后,會立即釋放所占用的資源。一般而言,當(dāng)使用SELECT語句訪問數(shù)據(jù)時,系統(tǒng)自動對所訪問的數(shù)據(jù)使用共享鎖鎖定。鎖03鎖的類型2.排他鎖對于那些修改數(shù)據(jù)的事務(wù),如INSERT、UPDATE和DELETE語句,系統(tǒng)自動在所修改的事務(wù)上放置排他鎖。排他鎖就是在同一時間內(nèi)只允許一個事務(wù)訪問一種資源,其他事務(wù)都不能在有排他鎖的資源上訪問。只有當(dāng)產(chǎn)生排他鎖的事務(wù)結(jié)束之后,排他鎖鎖定的資源才能被其他事務(wù)使用。鎖03鎖的類型3.修改鎖在修改操作的初始化階段用于鎖定可能被修改的資源,以防止使用共享鎖可能產(chǎn)生的死鎖現(xiàn)象。在使用共享鎖時,一個事務(wù)對數(shù)據(jù)修改操作的執(zhí)行過程如下:事務(wù)首先獲得一-個共享鎖,讀取記錄,然后將共享鎖申請升級為排他鎖,再執(zhí)行數(shù)據(jù)修改操作。采用這種方式時,如果兩個并發(fā)事務(wù)獲得同一個資源的共享鎖后都需要修改數(shù)據(jù),則兩者均申請將共享鎖升級為排他鎖,這時,雙方都不再釋放共享鎖而一直等對方釋放共享鎖,從而造成死鎖現(xiàn)象。為了避免這種現(xiàn)象的發(fā)生,一個數(shù)據(jù)修改事務(wù)在開始時直接申請修改鎖,之后,在需要修改數(shù)據(jù)時,再將修改鎖轉(zhuǎn)換為排他鎖,或者將修改鎖轉(zhuǎn)換為共享鎖。鎖03鎖的類型4.意向鎖意向鎖說明SQLServer有在該鎖所鎖定資源的低層資源上獲得共享鎖或排他鎖的意向,在表上設(shè)置意向鎖可以阻止其他事務(wù)獲得該表的排他鎖。意向鎖又分為共享意向鎖、排他意向鎖和共享式排他意向鎖三種。(1)共享意向鎖:說明一個事務(wù)準(zhǔn)備在共享意向鎖所鎖定資源的低層上放置共享鎖來讀取資源數(shù)據(jù)。(2)排他意向鎖:說明一個事務(wù)準(zhǔn)備在排他意向鎖所鎖定資源的低層資源上放置排他鎖來修改其中的資源數(shù)據(jù)。(3)共享式排他意向鎖:說明當(dāng)前事務(wù)允許其他事務(wù)使用共享鎖來并發(fā)讀取頂層資源,并準(zhǔn)備在該資源的低層資源上放置排他意向鎖。鎖03查看鎖在SQLServer2019中使用sys.dm_tranlocks動態(tài)管理視圖可以返回有關(guān)當(dāng)前活動的鎖管理器資源的信息。同時,也可以使用系統(tǒng)存儲過程sp_lock查看鎖的信息。使用系統(tǒng)存儲過程sp_lock可以查看SQLServer系統(tǒng)或指定進(jìn)程對資源的鎖定情況,基本語句格式如下:其中,spid1和spid2為進(jìn)程標(biāo)識號。指定spid1、spid2參數(shù)時,SQLServer顯示這些進(jìn)程的鎖定情況,否則顯示整個系統(tǒng)的鎖使用情況。進(jìn)程標(biāo)識號為一個整數(shù),可以使用系統(tǒng)存儲過程sp_who檢索當(dāng)前啟動的進(jìn)程及各進(jìn)程所對應(yīng)的標(biāo)識號。鎖03設(shè)置事務(wù)隔離級別隔離是計算機(jī)安全學(xué)中的一種概念,其本質(zhì)上是一種封鎖機(jī)制。它是指自動數(shù)據(jù)處理系統(tǒng)中的用戶和資源的相關(guān)牽制關(guān)系,即用戶和進(jìn)程彼此分開且與操作系統(tǒng)的保護(hù)控制也分開。在SQLServer中,隔離級別是指一個事務(wù)和其他事務(wù)的隔離程度,即指定了數(shù)據(jù)庫如何保護(hù)鎖定那些當(dāng)前正在被其他用戶或服務(wù)器請求使用的數(shù)據(jù)。指定事務(wù)的隔離級別與在SELECT語句中使用鎖定選項來控制鎖定方式具有相同的效果。SQLServer中有以下四種隔離級別。(1)READCOMMITTED:在此隔離級別下,SELECT命令不會返回尚未提交的數(shù)據(jù),也不能返回臟數(shù)據(jù),它是SQLServer默認(rèn)的隔離級別。(2)READUNCOMMITTED:與READCOMMITTED隔離級別相反,它允許讀取已經(jīng)被其他用戶修改但尚未提交確定的數(shù)據(jù)。鎖03設(shè)置事務(wù)隔離級別(3)REPEATABLEREAD:在此隔離級別下,用SELECT命令讀取的數(shù)據(jù)在整個命令執(zhí)行過程中不會被更改。此選項會影響系統(tǒng)的效能,非必要情況最好不要使用此隔離級別。(4)SERIALIZABLE:在此隔離級別下,在整個SELECT命令執(zhí)行的過程中設(shè)定的共享鎖會一直存在。隔離級別需要使用SET命令來設(shè)定,基本語句格式如下:鎖03死鎖的處理1.死鎖
鎖03死鎖的處理1.死鎖兩個用戶分別鎖定一個資源,之后雙方又都等待對方釋放所鎖定的資源,就產(chǎn)生了一個鎖定請求環(huán),從而出現(xiàn)死鎖現(xiàn)象。死鎖會造成資源的大量浪費(fèi),甚至?xí)瓜到y(tǒng)崩潰。在多用戶環(huán)境下,數(shù)據(jù)庫系統(tǒng)出現(xiàn)死鎖現(xiàn)象是難免的。SQLServer數(shù)據(jù)庫引擎自動檢測SQLServer中的死鎖循環(huán),并選擇一個會話作為死鎖犧牲品,然后終止當(dāng)前事務(wù)(出現(xiàn)錯誤)來打斷死鎖。鎖03死鎖的處理2.死鎖檢測SQLServer能夠自動定期搜索和處理死鎖問題。SQLServer在每次定期搜索中標(biāo)識所有等待鎖定請求的會話,如果在下一次搜索中被標(biāo)識進(jìn)程仍處于等待狀態(tài),則SQLServer將開始遞歸死鎖搜索。當(dāng)遞歸死鎖搜索檢測到鎖定請求環(huán)時,SQLServer根據(jù)各會話的死鎖優(yōu)先級選項等設(shè)置結(jié)束一個代價最低的事務(wù)。之后,SQLServer回滾被中斷的事務(wù),并向應(yīng)用程序返回1205號錯誤,而未被中斷的事務(wù)則繼續(xù)運(yùn)行。鎖03死鎖的處理3.死鎖處理【任務(wù)3-3】使用TRY…CATCH進(jìn)行死鎖處理。(1)設(shè)計產(chǎn)生死鎖的事務(wù)。將下面的SQL語句放在兩個不同的連接中,并且在5秒內(nèi)同時執(zhí)行,將會發(fā)生死鎖。鎖03死鎖的處理3.死鎖處理(2)SQLServer對死鎖的自動處理。SQLServer對付死鎖的辦法是犧牲掉其中的一個,拋出異常,并且回滾事務(wù)。在上面兩個連接的語句執(zhí)行時,先執(zhí)行查詢的連接能夠成功執(zhí)行,運(yùn)行結(jié)果如圖10-12所示。后執(zhí)行查詢的連接被選為犧牲品,運(yùn)行結(jié)果如圖10-13所示。在被犧牲的連接中,“PRINT'事務(wù)結(jié)束'”語句將不會被運(yùn)行。鎖03死鎖的處理3.死鎖處理(3)使用TRY…CATCH處理死鎖。在SQLServer2019中可以通過TRY…CATCH對異常進(jìn)行捕獲,也就提供了一條處理死鎖的途徑:程序員可以通過該語句捕獲事務(wù)執(zhí)行過程中的錯誤,根據(jù)設(shè)定的次數(shù)進(jìn)行重試。鎖03死鎖的處理鎖03死鎖的處理3.死鎖處理該事務(wù)中由于使用TRY…CATCH進(jìn)行了錯誤捕獲,因此在兩個連接中執(zhí)行該事務(wù)時,后執(zhí)行的事務(wù)在遇到死鎖時不會被選為犧牲品,而是在指定的延時后進(jìn)行重試,等到另一進(jìn)程釋放資源后執(zhí)行事務(wù)。運(yùn)行結(jié)果如圖10-14所示。感謝觀看,再見!SQLServer實(shí)例教程(2019版)”十四五”職業(yè)教育國家規(guī)劃教材SQLServer實(shí)例教程(2019版)數(shù)據(jù)庫安全操作第十一章”十四五”職業(yè)教育國家規(guī)劃教材01數(shù)據(jù)庫安全概述數(shù)據(jù)庫安全概述01數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。數(shù)據(jù)庫的安全性和計算機(jī)系統(tǒng)的安全性,以及操作系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)的安全性是緊密聯(lián)系、相互支持的。對于數(shù)據(jù)庫管理者來說,保護(hù)數(shù)據(jù)不受內(nèi)部和外部侵害是一項重要的工作,作為SQLServer的數(shù)據(jù)庫系統(tǒng)管理員和開發(fā)者,需要深入地理解SQLServer的安全性控制策略,以實(shí)現(xiàn)信息系統(tǒng)安全的目標(biāo)。圖11-3給出了數(shù)據(jù)庫引擎權(quán)限層次結(jié)構(gòu)之間的關(guān)系。由圖可見,SQLServer的安全控制策略是一個層次結(jié)構(gòu)系統(tǒng)的集合,只有滿足上一層系統(tǒng)的安全性要求之后,才可以進(jìn)入下一層,各層次從不同角度對系統(tǒng)實(shí)施安全保護(hù),從而構(gòu)成一個相對完善、安全的系統(tǒng)。數(shù)據(jù)庫安全概述01Windows級安全性是指對在Windows操作系統(tǒng)層次上提供的安全控制,在此不做詳細(xì)介紹,大家可以參閱Windows操作系統(tǒng)的相關(guān)說明。SQLServer級安全性是在SQLServer服務(wù)器層次上提供的安全控制,該層次通過驗證來實(shí)現(xiàn)。驗證過程在用戶登錄SQLServer的時候出現(xiàn),所創(chuàng)建的安全賬戶稱為登錄賬戶。用戶必須通過輸入登錄賬戶名和密碼才能登錄到SQLServer服務(wù)器,只有登錄了SQLServer服務(wù)器,用戶才能使用、管理sQLServer服務(wù)器。數(shù)據(jù)庫級安全性是指在數(shù)據(jù)庫層次上提供的安全控制,該層次通過授權(quán)來實(shí)現(xiàn)。授權(quán)過程在用戶試圖訪問數(shù)據(jù)或執(zhí)行命令的時候出現(xiàn),所創(chuàng)建的安全賬戶稱為數(shù)據(jù)庫用戶。用戶通過輸入登錄用戶名及密碼登錄到SQLServer后,如果需要訪問服務(wù)器上的對象(基本表、數(shù)據(jù)庫、視圖、存儲過程等),則必須為登錄賬戶指定相關(guān)的數(shù)據(jù)庫用戶,這樣就可以使不同的登錄對不同的數(shù)據(jù)庫對象有不同的權(quán)限。02登錄管理登錄管理02驗證模式1.Windows驗證模式Windows身份驗證模式使用戶可以通過Windows操作系統(tǒng)用戶賬戶連接到SQLServer實(shí)例。當(dāng)用戶通過Windows用戶賬戶進(jìn)行連接時,SQLServer通過回叫Windows獲得信息,重新驗證賬戶名和密碼。SQLServer通過使用網(wǎng)絡(luò)用戶的安全特性控制登錄訪問,這樣就可以實(shí)現(xiàn)與Windows的登錄安全集成。用戶的網(wǎng)絡(luò)安全特性在網(wǎng)絡(luò)登錄時建立,并通過Windows域控制器進(jìn)行驗證。當(dāng)網(wǎng)絡(luò)用戶嘗試連接時,SQLServer使用基于Windows的功能確定經(jīng)過驗證的網(wǎng)絡(luò)用戶名,登錄安全集成在SQLServer中任何受支持的網(wǎng)絡(luò)協(xié)議上運(yùn)行。登錄管理02驗證模式1.Windows驗證模式由于Windows用戶和組織由Windows維護(hù),因此當(dāng)用戶進(jìn)行連接時,SQLServer將讀取有關(guān)該用戶在組中的成員資格信息。如果對已連接用戶的可訪問權(quán)限進(jìn)行更改,則當(dāng)用戶下次連接到SQLServer實(shí)例或登錄到Windows時,這些更改將生效。登錄管理02驗證模式2.混合驗證模式混合驗證模式使用戶可以使用Windows身份驗證或SQLServer身份驗證與SQLServer實(shí)例連接。當(dāng)用戶用指定的登錄名稱和密碼從非信任連接進(jìn)行連接時,SQLServer通過檢查是否已設(shè)置SQLServer登錄賬戶,以及指定的密碼是否與以前記錄的密碼匹配,自行進(jìn)行身份驗證。如果SQLServer未設(shè)置登錄賬戶,則身份驗證將失敗,而且用戶會收到錯誤信息。盡管建議使用Windpws身份驗證,但對于Windows客戶端以外的其他客戶端連接,可能需要使用SQLServer身份驗證。雖然SQLServer提供了兩種認(rèn)證模式,但實(shí)際上混合認(rèn)證只是在Windows身份驗證模式上增加了一層用戶認(rèn)證,具體認(rèn)證流程如圖11-4所示。登錄管理02驗證模式登錄管理02使用T-SQL管理登錄名1.新建和修改登錄名(1)創(chuàng)建SOLServer登錄名。使用CREATELOGIN語句可以創(chuàng)建登錄名,其基本語句格式如下:(2)修改登錄名。使用ALTERLOGIN語句可以修改登錄名的密碼和用戶名稱,基本語句格式如下:登錄管理02使用T-SQL管理登錄名2.刪除登錄名使用DROPLOGIN語句可以刪除登錄名,基本語句格式如下:3.查詢登錄名信息使用存儲過程sp_helplogins可以查詢登錄賬戶的信息。03用戶管理用戶管理03使用T-SQL管理數(shù)據(jù)庫用戶1.新建和修改數(shù)據(jù)庫用戶(1)創(chuàng)建數(shù)據(jù)庫用戶。使用CREATEUSER可以添加數(shù)據(jù)庫用戶,基本語句格式如下:(2)修改數(shù)據(jù)庫用戶。使用ALTERUSER語句可以改變數(shù)據(jù)庫的用戶名和密碼,基本語句格式如下:用戶管理03使用T-SQL管理數(shù)據(jù)庫用戶2.查看數(shù)據(jù)庫用戶屬性使用存儲過程sp_helpuser可以查看當(dāng)前數(shù)據(jù)庫用戶信息,基本語句格式如下:3.刪除數(shù)據(jù)庫用戶使用DROPUSER語句可以刪除數(shù)據(jù)庫用戶,基本語句格式如下:04角色管理角色管理04服務(wù)器角色1.固定服務(wù)器角色SQLServer2019提供了9個固定的服務(wù)器角色,如表11-2所示。固定服務(wù)器角色的每個成員都可以向其所屬角色添加其他登錄名。角色管理04服務(wù)器角色2.設(shè)置服務(wù)器角色【任務(wù)3-1】使用SQLServerManagementStudio將登錄名“newlogin”添加到“sysadmin”固定服務(wù)器角色中。(1)啟動SQLServerManagementStudio,在“對象資源管理器”中依次展開【安全性】節(jié)點(diǎn)、【服務(wù)器角色】節(jié)點(diǎn)。角色管理04服務(wù)器角色2.設(shè)置服務(wù)器角色(2)右擊【sysadmin】節(jié)點(diǎn),在彈出的快捷菜單中選擇【屬性】選項,如圖11-23所示。角色管理04服務(wù)器角色2.設(shè)置服務(wù)器角色(3)打開“服務(wù)器角色屬性-sysadmin”對話框,如圖11-24所示,進(jìn)行如下設(shè)置。①單擊【添加】按鈕,打開“選擇登錄名”對話框,從中選擇要添加到sysadmin服務(wù)器角色中的登錄名。②單擊【刪除】按鈕,可以將選定的登錄名從該服務(wù)器角色中刪除。角色管理04服務(wù)器角色3.查看登錄所屬服務(wù)器角色查看登錄所屬服務(wù)器角色,請參閱“查看登錄屬性”。在【任務(wù)3-1】完成后,登錄名“newlogin"所屬服務(wù)器角色(這里為public和sysadmin)情況如圖11-25所示。角色管理04數(shù)據(jù)庫角色SQLServer2019共提供了10個固定數(shù)據(jù)庫角色,在使用SQLServer時可將任何有效的用戶賬戶(Windows用戶或組、SQLServer用戶或角色)添加為固定數(shù)據(jù)庫角色成員,每個成員都將獲得所屬的固定數(shù)據(jù)庫角色的權(quán)限。固定數(shù)據(jù)庫角色的任何成員都可將其他用戶添加到角色中,固定數(shù)據(jù)庫角色的具體描述如表11-3所示。1.固定數(shù)據(jù)庫角色角色管理04數(shù)據(jù)庫角色當(dāng)一組用戶需要執(zhí)行一組類似的活動時,如果既沒有適用的Windows組,也沒有管理Windows用戶賬戶的權(quán)限(如果有Windows用戶賬戶管理權(quán)限,可以在Windows操作系統(tǒng)中創(chuàng)建組),可以在SQLServer中創(chuàng)建用戶定義數(shù)據(jù)庫角色。使用CREATEROLE語句可以在當(dāng)前數(shù)據(jù)庫中創(chuàng)建新的用戶定義數(shù)據(jù)庫角色,其基本語句格式如下:使用存儲過程sp_addrolemember可以為當(dāng)前數(shù)據(jù)庫中的數(shù)據(jù)庫角色添加數(shù)據(jù)庫用戶。2.用戶自定義數(shù)據(jù)庫角色05權(quán)限管理權(quán)限管理05權(quán)限類型1.默認(rèn)權(quán)限默認(rèn)權(quán)限是指系統(tǒng)安裝以后固定服務(wù)器角色、固定數(shù)據(jù)庫角色和數(shù)據(jù)庫對象所有者具有的默認(rèn)的權(quán)限。固定角色的所有成員自動繼承角色的默認(rèn)權(quán)限。SQLServer中包含很多對象,每個對象都有一個屬主。一般情況下,對象的屬主是創(chuàng)建該對象的用戶。如果系統(tǒng)管理員創(chuàng)建了一個數(shù)據(jù)庫,則系統(tǒng)管理員就是這個數(shù)據(jù)庫的屬主;如果用戶A創(chuàng)建了個表,用戶A就是這個表的屬主。默認(rèn)情況下,系統(tǒng)管理員具有這個數(shù)據(jù)庫的全部操作權(quán)限,用戶A具有這個表的全部操作權(quán)限,這就是數(shù)據(jù)庫對象的默認(rèn)權(quán)限。權(quán)限管理05權(quán)限類型2.對象權(quán)限對象權(quán)限指的是基于數(shù)據(jù)庫層次上的訪問和操作權(quán)限。這里的對象包括表、視圖、列和存儲過程等。常用的對象權(quán)限包括查詢(SELECT)、插入(INSERT)、修改(UPDATE)、刪除(DELETE)和執(zhí)行(EXECUTE)等。其中,前4個權(quán)限用于表和視圖,執(zhí)行權(quán)限用于存儲過程。對象權(quán)限決定了能對表、視圖等數(shù)據(jù)庫對象執(zhí)行哪些操作。對象權(quán)限及其適用對象如表11-4所示。權(quán)限管理05權(quán)限類型權(quán)限管理05權(quán)限類型3.語句權(quán)限語句權(quán)限表示用戶能否對數(shù)據(jù)庫和數(shù)據(jù)庫對象進(jìn)行操作,語句權(quán)限應(yīng)用于語句本身,而不是數(shù)據(jù)庫對象。如果一個用戶獲得了某個語句的權(quán)限,該用戶就具有了執(zhí)行該語句的權(quán)限。需要進(jìn)行權(quán)限設(shè)置的語句如表11-5所示。權(quán)限管理05
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版行政合同行政主體特權(quán)與公眾權(quán)益保護(hù)協(xié)議3篇
- 2025年度離婚房產(chǎn)贈與合同附帶配偶經(jīng)濟(jì)補(bǔ)償協(xié)議
- 2025年度解除租賃合同簡易協(xié)議書(教育培訓(xùn)場地)
- 2025年度舞蹈表演培訓(xùn)學(xué)員招生合同書
- 二零二五年度裝合同終止協(xié)議書:商業(yè)辦公樓裝修工程終止協(xié)議
- 二零二五年度私人車輛抵押借款合同(含車輛貸款利率優(yōu)惠)
- 二零二五年度煙酒店線上線下融合支付合同
- 2025年度股東變更及公司社會責(zé)任履行與監(jiān)督協(xié)議
- 2025年度電動車租賃安全責(zé)任保險合作協(xié)議
- 二零二五年度商鋪購買合同主體變更協(xié)議
- 2024年江蘇鑫財國有資產(chǎn)運(yùn)營有限公司招聘筆試沖刺題(帶答案解析)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 廣西桂林市2023-2024學(xué)年高二上學(xué)期期末考試物理試卷
- 財務(wù)指標(biāo)與財務(wù)管理
- 2023-2024學(xué)年西安市高二數(shù)學(xué)第一學(xué)期期末考試卷附答案解析
- 部編版二年級下冊道德與法治第三單元《綠色小衛(wèi)士》全部教案
- 【京東倉庫出庫作業(yè)優(yōu)化設(shè)計13000字(論文)】
- 保安春節(jié)安全生產(chǎn)培訓(xùn)
- 初一語文上冊基礎(chǔ)知識訓(xùn)練及答案(5篇)
- 血液透析水處理系統(tǒng)演示
- GB/T 27030-2006合格評定第三方符合性標(biāo)志的通用要求
評論
0/150
提交評論