正確修改SQL Server 2005執(zhí)行環(huán)境之所有權(quán)鏈
以下的文章主要描述的是正確修改SQL Server 2005執(zhí)行環(huán)境的實(shí)際操作步驟,假如你在實(shí)際操作中遇到修改SQL Server 2005執(zhí)行環(huán)境的情況,但你卻不知道對(duì)其如何正確的解決,那么以下的文章對(duì)你而言一定是良師益友。
執(zhí)行環(huán)境是SQL Server數(shù)據(jù)庫中設(shè)定用戶權(quán)限的認(rèn)證方式,比如,當(dāng)您登錄到SQL Server的時(shí)候,登錄賬戶就被賦予了一定的權(quán)限,其中可能包括登錄的功能、訪問數(shù)據(jù)庫以及在數(shù)據(jù)庫中執(zhí)行某些操作的功能。
SQL Server 2005包含了EXECUTE AS語句,通過使用EXECUTE AS語句,您可以為批處理和過程轉(zhuǎn)換執(zhí)行環(huán)境,這樣,調(diào)用該批處理或過程的用戶就可以使用不同的權(quán)限來操作了。
所有權(quán)鏈
在我正式講解SQL Server 2005中執(zhí)行環(huán)境的問題之前,先來簡單地說說所有權(quán)鏈的工作原理。
當(dāng)用戶執(zhí)行一個(gè)存儲(chǔ)過程的時(shí)候(假定該用戶擁有執(zhí)行該存儲(chǔ)過程的權(quán)限),SQL Server將該存儲(chǔ)過程的所有者與這個(gè)存儲(chǔ)過程所涉及到的對(duì)象的所有者進(jìn)行對(duì)比,如果他們的所有者相同,那么就不必對(duì)這些引用對(duì)象的權(quán)限進(jìn)行評(píng)估了。
所以,如果用戶Tim獲得了存儲(chǔ)過程usp_ProcedureChain的權(quán)限,而usp_ProcedureChain存儲(chǔ)過程的所有者是dbo,那么,如果dbo還同時(shí)擁有usp_ProcedureChain所調(diào)用的其他存儲(chǔ)過程,那么Tim在執(zhí)行這個(gè)存儲(chǔ)過程的時(shí)候就不會(huì)出現(xiàn)錯(cuò)誤。
執(zhí)行環(huán)境的轉(zhuǎn)換
在SQL Server 2000中,您可以使用SETUSER命令來模擬SQL用戶的執(zhí)行環(huán)境,但問題在于,只有系統(tǒng)管理員或者數(shù)據(jù)庫的所有者才能使用這個(gè)命令,而且Windows賬戶也不能使用該命令。
在SQL Server 2005中,EXECUTE AS語句可以替代SETUSER來改變存儲(chǔ)過程、觸發(fā)器、批處理或者函數(shù)的執(zhí)行環(huán)境。如果執(zhí)行環(huán)境變成了另外一個(gè)用戶,那么SQL Server將檢查該用戶的權(quán)限。如果您需要在創(chuàng)建或修改一個(gè)存儲(chǔ)過程或函數(shù)的時(shí)候指定EXECUTE AS語句,您需要具備IMPERSONATE的權(quán)限,以及創(chuàng)建該對(duì)象的權(quán)限。
上述的相關(guān)內(nèi)容就是對(duì)修改SQL Server 2005執(zhí)行環(huán)境的描述,希望會(huì)給你帶來一些幫助在此方面。
【編輯推薦】
- 三種SQL Server查找數(shù)據(jù)方法的比較
- 用SQL Server索引密度對(duì)行數(shù)進(jìn)行評(píng)估
- SQL Server評(píng)價(jià)索引之有效性
- SQL Server視圖索引與索引視圖指南
- SQL Server選擇索引之查詢VS 的性能修改