SQL Sever實例教程(2019版) 課件 劉志成 第10、11章 游標、事務和鎖;數(shù)據(jù)庫安全操作_第1頁
SQL Sever實例教程(2019版) 課件 劉志成 第10、11章 游標、事務和鎖;數(shù)據(jù)庫安全操作_第2頁
SQL Sever實例教程(2019版) 課件 劉志成 第10、11章 游標、事務和鎖;數(shù)據(jù)庫安全操作_第3頁
SQL Sever實例教程(2019版) 課件 劉志成 第10、11章 游標、事務和鎖;數(shù)據(jù)庫安全操作_第4頁
SQL Sever實例教程(2019版) 課件 劉志成 第10、11章 游標、事務和鎖;數(shù)據(jù)庫安全操作_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

SQLServer實例教程(2019版)游標、事務和鎖第十章”十四五”職業(yè)教育國家規(guī)劃教材01游標游標01游標概述游標通過以下方式擴展結(jié)果集的處理。(1)允許定位在結(jié)果集的特定行。(2)從結(jié)果集的當前位置檢索-行或多行。(3)支持對結(jié)果集中當前位置的行進行數(shù)據(jù)修改。在SQLServer2019中使用游標的一般步驟如下。(1)聲明游標(DECLARECURSOR)。(2)打開游標(OPENCURSOR)。(3)提取游標(FETCHCURSOR)。(4)根據(jù)需要,對游標中當前位置的行執(zhí)行修改操作(更新或刪除)。(5)關(guān)閉游標(CLOSECURSOR)。(6)釋放游標(DEALLOCATECURSOR)。游標01游標概述(1)DECLARECURSOR。聲明游標,定義T-SQL服務器游標的屬性,如游標的滾動行為和用于生成游標所操作的結(jié)果集的查詢,其基本語句格式如下:參數(shù)含義如下:●

cursor_name:所定義的T-SQL服務器游標名稱;●

SELECTstatement:定義游標結(jié)果集的標準SELECT語句。游標01游標概述(2)OPENCURSOR。打開T-SQL服務器游標,然后通過執(zhí)行在DECLARECURSOR或SETcursorvariable語句中指定的T-SQL語句來填充游標,其基本語句格式如下:游標01游標概述(3)FETCHCURSOR。提取游標,從T-SQL服務器游標中檢索特定的一行,其基本語句格式如下:參數(shù)含義如下:●

NEXT:返回緊跟當前行之后的結(jié)果行。如果FETCHNEXT為對游標的第一次提取操作,則運行結(jié)果集中的第一行。游標01游標概述●

PRIOR:返回緊臨當前行前面的結(jié)果行。如果FETCHPRIOR為對游標的第一次提取操作,則沒有行返回并且游標置于第一行之前?!?/p>

FIRST:返回游標中的第一行并將其作為當前行。●

LAST:返回游標中的最后一行并將其作為當前行?!?/p>

ABSOLUTEn:如果n為正數(shù),返回從游標頭開始的第n行并將返回的行變成新的當前行。如果n為負數(shù),返回游標尾之前的第n行并將返回的行變成新的當前行。如果

n

為0,則沒有行返回。●

RELATIVEn:返回當前行之前或之后的第n

行并將返回的行變成新的當前行。●

cursorname:要從中提取的游標的名稱。●

INTO@variable_name[,…n]:允許將提取操作的列數(shù)據(jù)放到局部變量中。列表中的各個變量從左到右與游標結(jié)果集中的相應列相關(guān)聯(lián)。各變量的數(shù)據(jù)類型必須與相應的結(jié)果列的數(shù)據(jù)類型匹配。變量的數(shù)目必須與游標選擇列表中的列的數(shù)目一致。游標01游標概述(4)CLOSECURSOR:關(guān)閉游標,通過釋放當前結(jié)果集并且解除定位游標的行上的游標鎖定。關(guān)閉游標后,游標可以重新打開,但不允許提取和定位更新,其基本語句格式如下:(5)DEALLOCATECURSOR:刪除游標,其基本語句格式如下:02事務事務02事務概述事務是SQLServer中的單個邏輯工作單元,也是一個操作序列,它包含了一組數(shù)據(jù)庫操作命令,所有的命令作為一個整體一起向系統(tǒng)提交或撤銷,如果某一事務成功,則在該事務中進行的所有數(shù)據(jù)修改均會提交,成為數(shù)據(jù)庫中的永久組成部分。如果事務遇到錯誤且必須取消或回滾,則所有數(shù)據(jù)修改均被清除。因此,事務是一個不可分割的工作邏輯單元,在SQLServer中應用事務來保證數(shù)據(jù)庫的一致性和可恢復性。一個邏輯工作單元必須具備以下四種屬性,也稱為ACID(每種屬性英文名稱的首字母)屬性。事務02事務概述(1)原子性。一個事務必須作為SQLServer工作的原子單位,要么全部執(zhí)行,要么全部取消。(2)一致性。當事務完成后,所有數(shù)據(jù)必須處于一致性(但不相同)狀態(tài),即事務所修改的數(shù)據(jù)必須遵循數(shù)據(jù)庫中各種約束要求,保持數(shù)據(jù)的完整性;在事務完成時,SQLServer所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如索引與數(shù)據(jù)的連接等)必須得到更新。事務02事務概述(3)隔離性。一個事務所做的修改必須能夠與其他事務所做的修改隔離開來,即在并發(fā)處理過程中,一個事務所看到的數(shù)據(jù)狀態(tài)必須為另一個事務處理前或處理后的數(shù)據(jù),而不能為在正被其他事務所修改的數(shù)據(jù)。事務的隔離性通過鎖來實現(xiàn),在本章的后續(xù)內(nèi)容中還將對隔離進行詳細說明。(4)持久性。事務完成后,它對數(shù)據(jù)庫所做的修改將被永久保持。事務日志能夠保證事務的永久性,SQLServer在每次啟動時,它會自動修復數(shù)據(jù)庫,并根據(jù)事務日志回滾所有數(shù)據(jù)庫中未完成的事務。事務02自動提交事務自動提交模式是SQLServer數(shù)據(jù)庫引擎的默認事務管理模式。每個T-SQL語句在完成時,都被提交或回滾。如果一個語句成功完成了,則提交該語句;如果遇到錯誤,則國滾該語句。在自動提交模式下,當遇到編譯錯誤時,數(shù)據(jù)庫引擎回滾整個批處理而不僅僅回滾一個SQL語句。編譯錯誤會阻止數(shù)據(jù)庫引擎生成執(zhí)行計劃,這樣批處理中的任何語句都不會執(zhí)行。因此,產(chǎn)生編譯錯誤時,回滾了產(chǎn)生錯誤的語句之前的所有語句,并且該錯誤阻止了批處理中的所有語句的執(zhí)行。事務02顯式事務1.定義和提交事務通常,在程序中用BEGINTRANSACTION命令來標識一個事務的啟動開始,用COMMITTRANSACTION命令標識事務結(jié)束。這兩個命令之間的所有語句被視為一體,即事務。只有執(zhí)行到COMMTTRANSACTION命令時,事務中對數(shù)據(jù)庫的更新操作才算確認,這兩個命令的基本語句格式如下:事務02顯式事務2.回滾事務事務回滾是指當事務中的某條語句執(zhí)行失敗時,將對數(shù)據(jù)庫的操作恢復到事務執(zhí)行前或某個指定位置。事務回滾使用ROLLBACKTRANSACTION命令,其基本語句格式如下:事務02顯式事務2.回滾事務如果要讓事務回滾到指定位置,則需要在事務中設定事務保存點。所謂保存點,是指定其所在位置之前的事務語句不能回滾,即此語句前面的操作被視為有效,其基本語句格式加下:事務02隱式事務當連接以隱性事務模式進行操作時,SQLServer數(shù)據(jù)庫引擎實例將在提交或回滾當前事務后自動啟動新事務。不需要描述事務的開始,只需要提交或回滾每個事務,隱性事務模式將生成連續(xù)的事務鏈。將隱性事務模式設置為打開之后,當數(shù)據(jù)庫引擎實例首次執(zhí)行某些T-SQL語句時,都會自動啟動一個事務。首次執(zhí)行時,自動啟動事務的T-SQL語句如表10-2所示。事務02隱式事務在發(fā)出COMMIT語句或ROLLBACK語句之前,該事務將一直保持有效。在第一個事務被提交或回滾之后,下次連接執(zhí)行以上任何語句時,數(shù)據(jù)庫引擎實例都將自動啟動一個新事務。該實例將不斷地生成隱性事務鏈,直到隱性事務模式關(guān)閉為止。隱性事務模式既可以使用T-SQL的SET語句來設置,也可以通過數(shù)據(jù)庫API函數(shù)和方法來設置。03鎖鎖03并發(fā)問題1.丟失更新當兩個或多個事務選擇同一行,并基于最初選定的值更新該行時,會發(fā)生丟失更新問題。每個事務都不知道其他事務的存在,最后的更新將重寫由其他事務所做的更新,這將導致數(shù)據(jù)丟失。鎖03并發(fā)問題2.未確認的相關(guān)性(臟讀)當一個事務正在訪問數(shù)據(jù),對數(shù)據(jù)進行了修改,而這種修改還沒有提交到數(shù)據(jù)庫中時,而另外一個事務也訪問這個數(shù)據(jù),并且使用了這個數(shù)據(jù)。因為這個數(shù)據(jù)是還沒有提交的數(shù)據(jù),那么第二個事務讀到的這個數(shù)據(jù)就是臟數(shù)據(jù),依據(jù)臟數(shù)據(jù)所做的操作可能是不正確的。鎖03并發(fā)問題3.不一致的分析(非重復讀)在一個事務還沒有結(jié)束時,另一個事務也訪問同一數(shù)據(jù),這樣,在第一個事務中的兩次讀數(shù)據(jù)之間,由于第二個事務的修改,第一個事務兩次讀到的數(shù)據(jù)可能是不一致的。這樣就使得第一個事務內(nèi)兩次讀到的數(shù)據(jù)是不一致的,因此稱為不可重復讀取。鎖03并發(fā)問題4.幻象讀當對某行執(zhí)行插入或刪除操作,而該行屬于某個事務正在讀取的行的范圍時,會發(fā)生幻象讀問題。事務第一次讀的行范圍顯示出其中一行已不復存在于第二次讀或后續(xù)讀中,因為該行已被其他事務刪除。同樣,由于其他事務的插入操作,事務的第二次或后續(xù)讀顯示有一行已不存在于原始讀中。鎖03鎖的類型SQLServer數(shù)據(jù)庫引擎使用不同的鎖模式鎖定資源,這些鎖模式確定了并發(fā)事務訪問資源的方式。數(shù)據(jù)庫引擎使用的資源鎖模式如表10-3所示。鎖03鎖的類型1.共享鎖共享鎖用于只讀數(shù)據(jù)操作,它允許多個并發(fā)事務讀取所鎖定的資源,但禁止其他事務對鎖定資源的進行修改操作。默認情況下,當讀取數(shù)據(jù)的事務讀完數(shù)據(jù)之后,會立即釋放所占用的資源。一般而言,當使用SELECT語句訪問數(shù)據(jù)時,系統(tǒng)自動對所訪問的數(shù)據(jù)使用共享鎖鎖定。鎖03鎖的類型2.排他鎖對于那些修改數(shù)據(jù)的事務,如INSERT、UPDATE和DELETE語句,系統(tǒng)自動在所修改的事務上放置排他鎖。排他鎖就是在同一時間內(nèi)只允許一個事務訪問一種資源,其他事務都不能在有排他鎖的資源上訪問。只有當產(chǎn)生排他鎖的事務結(jié)束之后,排他鎖鎖定的資源才能被其他事務使用。鎖03鎖的類型3.修改鎖在修改操作的初始化階段用于鎖定可能被修改的資源,以防止使用共享鎖可能產(chǎn)生的死鎖現(xiàn)象。在使用共享鎖時,一個事務對數(shù)據(jù)修改操作的執(zhí)行過程如下:事務首先獲得一-個共享鎖,讀取記錄,然后將共享鎖申請升級為排他鎖,再執(zhí)行數(shù)據(jù)修改操作。采用這種方式時,如果兩個并發(fā)事務獲得同一個資源的共享鎖后都需要修改數(shù)據(jù),則兩者均申請將共享鎖升級為排他鎖,這時,雙方都不再釋放共享鎖而一直等對方釋放共享鎖,從而造成死鎖現(xiàn)象。為了避免這種現(xiàn)象的發(fā)生,一個數(shù)據(jù)修改事務在開始時直接申請修改鎖,之后,在需要修改數(shù)據(jù)時,再將修改鎖轉(zhuǎn)換為排他鎖,或者將修改鎖轉(zhuǎn)換為共享鎖。鎖03鎖的類型4.意向鎖意向鎖說明SQLServer有在該鎖所鎖定資源的低層資源上獲得共享鎖或排他鎖的意向,在表上設置意向鎖可以阻止其他事務獲得該表的排他鎖。意向鎖又分為共享意向鎖、排他意向鎖和共享式排他意向鎖三種。(1)共享意向鎖:說明一個事務準備在共享意向鎖所鎖定資源的低層上放置共享鎖來讀取資源數(shù)據(jù)。(2)排他意向鎖:說明一個事務準備在排他意向鎖所鎖定資源的低層資源上放置排他鎖來修改其中的資源數(shù)據(jù)。(3)共享式排他意向鎖:說明當前事務允許其他事務使用共享鎖來并發(fā)讀取頂層資源,并準備在該資源的低層資源上放置排他意向鎖。鎖03查看鎖在SQLServer2019中使用sys.dm_tranlocks動態(tài)管理視圖可以返回有關(guān)當前活動的鎖管理器資源的信息。同時,也可以使用系統(tǒng)存儲過程sp_lock查看鎖的信息。使用系統(tǒng)存儲過程sp_lock可以查看SQLServer系統(tǒng)或指定進程對資源的鎖定情況,基本語句格式如下:其中,spid1和spid2為進程標識號。指定spid1、spid2參數(shù)時,SQLServer顯示這些進程的鎖定情況,否則顯示整個系統(tǒng)的鎖使用情況。進程標識號為一個整數(shù),可以使用系統(tǒng)存儲過程sp_who檢索當前啟動的進程及各進程所對應的標識號。鎖03設置事務隔離級別隔離是計算機安全學中的一種概念,其本質(zhì)上是一種封鎖機制。它是指自動數(shù)據(jù)處理系統(tǒng)中的用戶和資源的相關(guān)牽制關(guān)系,即用戶和進程彼此分開且與操作系統(tǒng)的保護控制也分開。在SQLServer中,隔離級別是指一個事務和其他事務的隔離程度,即指定了數(shù)據(jù)庫如何保護鎖定那些當前正在被其他用戶或服務器請求使用的數(shù)據(jù)。指定事務的隔離級別與在SELECT語句中使用鎖定選項來控制鎖定方式具有相同的效果。SQLServer中有以下四種隔離級別。(1)READCOMMITTED:在此隔離級別下,SELECT命令不會返回尚未提交的數(shù)據(jù),也不能返回臟數(shù)據(jù),它是SQLServer默認的隔離級別。(2)READUNCOMMITTED:與READCOMMITTED隔離級別相反,它允許讀取已經(jīng)被其他用戶修改但尚未提交確定的數(shù)據(jù)。鎖03設置事務隔離級別(3)REPEATABLEREAD:在此隔離級別下,用SELECT命令讀取的數(shù)據(jù)在整個命令執(zhí)行過程中不會被更改。此選項會影響系統(tǒng)的效能,非必要情況最好不要使用此隔離級別。(4)SERIALIZABLE:在此隔離級別下,在整個SELECT命令執(zhí)行的過程中設定的共享鎖會一直存在。隔離級別需要使用SET命令來設定,基本語句格式如下:鎖03死鎖的處理1.死鎖

鎖03死鎖的處理1.死鎖兩個用戶分別鎖定一個資源,之后雙方又都等待對方釋放所鎖定的資源,就產(chǎn)生了一個鎖定請求環(huán),從而出現(xiàn)死鎖現(xiàn)象。死鎖會造成資源的大量浪費,甚至會使系統(tǒng)崩潰。在多用戶環(huán)境下,數(shù)據(jù)庫系統(tǒng)出現(xiàn)死鎖現(xiàn)象是難免的。SQLServer數(shù)據(jù)庫引擎自動檢測SQLServer中的死鎖循環(huán),并選擇一個會話作為死鎖犧牲品,然后終止當前事務(出現(xiàn)錯誤)來打斷死鎖。鎖03死鎖的處理2.死鎖檢測SQLServer能夠自動定期搜索和處理死鎖問題。SQLServer在每次定期搜索中標識所有等待鎖定請求的會話,如果在下一次搜索中被標識進程仍處于等待狀態(tài),則SQLServer將開始遞歸死鎖搜索。當遞歸死鎖搜索檢測到鎖定請求環(huán)時,SQLServer根據(jù)各會話的死鎖優(yōu)先級選項等設置結(jié)束一個代價最低的事務。之后,SQLServer回滾被中斷的事務,并向應用程序返回1205號錯誤,而未被中斷的事務則繼續(xù)運行。鎖03死鎖的處理3.死鎖處理【任務3-3】使用TRY…CATCH進行死鎖處理。(1)設計產(chǎn)生死鎖的事務。將下面的SQL語句放在兩個不同的連接中,并且在5秒內(nèi)同時執(zhí)行,將會發(fā)生死鎖。鎖03死鎖的處理3.死鎖處理(2)SQLServer對死鎖的自動處理。SQLServer對付死鎖的辦法是犧牲掉其中的一個,拋出異常,并且回滾事務。在上面兩個連接的語句執(zhí)行時,先執(zhí)行查詢的連接能夠成功執(zhí)行,運行結(jié)果如圖10-12所示。后執(zhí)行查詢的連接被選為犧牲品,運行結(jié)果如圖10-13所示。在被犧牲的連接中,“PRINT'事務結(jié)束'”語句將不會被運行。鎖03死鎖的處理3.死鎖處理(3)使用TRY…CATCH處理死鎖。在SQLServer2019中可以通過TRY…CATCH對異常進行捕獲,也就提供了一條處理死鎖的途徑:程序員可以通過該語句捕獲事務執(zhí)行過程中的錯誤,根據(jù)設定的次數(shù)進行重試。鎖03死鎖的處理鎖03死鎖的處理3.死鎖處理該事務中由于使用TRY…CATCH進行了錯誤捕獲,因此在兩個連接中執(zhí)行該事務時,后執(zhí)行的事務在遇到死鎖時不會被選為犧牲品,而是在指定的延時后進行重試,等到另一進程釋放資源后執(zhí)行事務。運行結(jié)果如圖10-14所示。感謝觀看,再見!SQLServer實例教程(2019版)”十四五”職業(yè)教育國家規(guī)劃教材SQLServer實例教程(2019版)數(shù)據(jù)庫安全操作第十一章”十四五”職業(yè)教育國家規(guī)劃教材01數(shù)據(jù)庫安全概述數(shù)據(jù)庫安全概述01數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。數(shù)據(jù)庫的安全性和計算機系統(tǒng)的安全性,以及操作系統(tǒng)、網(wǎng)絡系統(tǒng)的安全性是緊密聯(lián)系、相互支持的。對于數(shù)據(jù)庫管理者來說,保護數(shù)據(jù)不受內(nèi)部和外部侵害是一項重要的工作,作為SQLServer的數(shù)據(jù)庫系統(tǒng)管理員和開發(fā)者,需要深入地理解SQLServer的安全性控制策略,以實現(xiàn)信息系統(tǒng)安全的目標。圖11-3給出了數(shù)據(jù)庫引擎權(quán)限層次結(jié)構(gòu)之間的關(guān)系。由圖可見,SQLServer的安全控制策略是一個層次結(jié)構(gòu)系統(tǒng)的集合,只有滿足上一層系統(tǒng)的安全性要求之后,才可以進入下一層,各層次從不同角度對系統(tǒng)實施安全保護,從而構(gòu)成一個相對完善、安全的系統(tǒng)。數(shù)據(jù)庫安全概述01Windows級安全性是指對在Windows操作系統(tǒng)層次上提供的安全控制,在此不做詳細介紹,大家可以參閱Windows操作系統(tǒng)的相關(guān)說明。SQLServer級安全性是在SQLServer服務器層次上提供的安全控制,該層次通過驗證來實現(xiàn)。驗證過程在用戶登錄SQLServer的時候出現(xiàn),所創(chuàng)建的安全賬戶稱為登錄賬戶。用戶必須通過輸入登錄賬戶名和密碼才能登錄到SQLServer服務器,只有登錄了SQLServer服務器,用戶才能使用、管理sQLServer服務器。數(shù)據(jù)庫級安全性是指在數(shù)據(jù)庫層次上提供的安全控制,該層次通過授權(quán)來實現(xiàn)。授權(quán)過程在用戶試圖訪問數(shù)據(jù)或執(zhí)行命令的時候出現(xiàn),所創(chuàng)建的安全賬戶稱為數(shù)據(jù)庫用戶。用戶通過輸入登錄用戶名及密碼登錄到SQLServer后,如果需要訪問服務器上的對象(基本表、數(shù)據(jù)庫、視圖、存儲過程等),則必須為登錄賬戶指定相關(guān)的數(shù)據(jù)庫用戶,這樣就可以使不同的登錄對不同的數(shù)據(jù)庫對象有不同的權(quán)限。02登錄管理登錄管理02驗證模式1.Windows驗證模式Windows身份驗證模式使用戶可以通過Windows操作系統(tǒng)用戶賬戶連接到SQLServer實例。當用戶通過Windows用戶賬戶進行連接時,SQLServer通過回叫Windows獲得信息,重新驗證賬戶名和密碼。SQLServer通過使用網(wǎng)絡用戶的安全特性控制登錄訪問,這樣就可以實現(xiàn)與Windows的登錄安全集成。用戶的網(wǎng)絡安全特性在網(wǎng)絡登錄時建立,并通過Windows域控制器進行驗證。當網(wǎng)絡用戶嘗試連接時,SQLServer使用基于Windows的功能確定經(jīng)過驗證的網(wǎng)絡用戶名,登錄安全集成在SQLServer中任何受支持的網(wǎng)絡協(xié)議上運行。登錄管理02驗證模式1.Windows驗證模式由于Windows用戶和組織由Windows維護,因此當用戶進行連接時,SQLServer將讀取有關(guān)該用戶在組中的成員資格信息。如果對已連接用戶的可訪問權(quán)限進行更改,則當用戶下次連接到SQLServer實例或登錄到Windows時,這些更改將生效。登錄管理02驗證模式2.混合驗證模式混合驗證模式使用戶可以使用Windows身份驗證或SQLServer身份驗證與SQLServer實例連接。當用戶用指定的登錄名稱和密碼從非信任連接進行連接時,SQLServer通過檢查是否已設置SQLServer登錄賬戶,以及指定的密碼是否與以前記錄的密碼匹配,自行進行身份驗證。如果SQLServer未設置登錄賬戶,則身份驗證將失敗,而且用戶會收到錯誤信息。盡管建議使用Windpws身份驗證,但對于Windows客戶端以外的其他客戶端連接,可能需要使用SQLServer身份驗證。雖然SQLServer提供了兩種認證模式,但實際上混合認證只是在Windows身份驗證模式上增加了一層用戶認證,具體認證流程如圖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可以查看當前數(shù)據(jù)庫用戶信息,基本語句格式如下:3.刪除數(shù)據(jù)庫用戶使用DROPUSER語句可以刪除數(shù)據(jù)庫用戶,基本語句格式如下:04角色管理角色管理04服務器角色1.固定服務器角色SQLServer2019提供了9個固定的服務器角色,如表11-2所示。固定服務器角色的每個成員都可以向其所屬角色添加其他登錄名。角色管理04服務器角色2.設置服務器角色【任務3-1】使用SQLServerManagementStudio將登錄名“newlogin”添加到“sysadmin”固定服務器角色中。(1)啟動SQLServerManagementStudio,在“對象資源管理器”中依次展開【安全性】節(jié)點、【服務器角色】節(jié)點。角色管理04服務器角色2.設置服務器角色(2)右擊【sysadmin】節(jié)點,在彈出的快捷菜單中選擇【屬性】選項,如圖11-23所示。角色管理04服務器角色2.設置服務器角色(3)打開“服務器角色屬性-sysadmin”對話框,如圖11-24所示,進行如下設置。①單擊【添加】按鈕,打開“選擇登錄名”對話框,從中選擇要添加到sysadmin服務器角色中的登錄名。②單擊【刪除】按鈕,可以將選定的登錄名從該服務器角色中刪除。角色管理04服務器角色3.查看登錄所屬服務器角色查看登錄所屬服務器角色,請參閱“查看登錄屬性”。在【任務3-1】完成后,登錄名“newlogin"所屬服務器角色(這里為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ù)庫角色當一組用戶需要執(zhí)行一組類似的活動時,如果既沒有適用的Windows組,也沒有管理Windows用戶賬戶的權(quán)限(如果有Windows用戶賬戶管理權(quán)限,可以在Windows操作系統(tǒng)中創(chuàng)建組),可以在SQLServer中創(chuàng)建用戶定義數(shù)據(jù)庫角色。使用CREATEROLE語句可以在當前數(shù)據(jù)庫中創(chuàng)建新的用戶定義數(shù)據(jù)庫角色,其基本語句格式如下:使用存儲過程sp_addrolemember可以為當前數(shù)據(jù)庫中的數(shù)據(jù)庫角色添加數(shù)據(jù)庫用戶。2.用戶自定義數(shù)據(jù)庫角色05權(quán)限管理權(quán)限管理05權(quán)限類型1.默認權(quán)限默認權(quán)限是指系統(tǒng)安裝以后固定服務器角色、固定數(shù)據(jù)庫角色和數(shù)據(jù)庫對象所有者具有的默認的權(quán)限。固定角色的所有成員自動繼承角色的默認權(quán)限。SQLServer中包含很多對象,每個對象都有一個屬主。一般情況下,對象的屬主是創(chuàng)建該對象的用戶。如果系統(tǒng)管理員創(chuàng)建了一個數(shù)據(jù)庫,則系統(tǒng)管理員就是這個數(shù)據(jù)庫的屬主;如果用戶A創(chuàng)建了個表,用戶A就是這個表的屬主。默認情況下,系統(tǒng)管理員具有這個數(shù)據(jù)庫的全部操作權(quán)限,用戶A具有這個表的全部操作權(quán)限,這就是數(shù)據(jù)庫對象的默認權(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ù)庫對象進行操作,語句權(quán)限應用于語句本身,而不是數(shù)據(jù)庫對象。如果一個用戶獲得了某個語句的權(quán)限,該用戶就具有了執(zhí)行該語句的權(quán)限。需要進行權(quán)限設置的語句如表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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論