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