更改當(dāng)前數(shù)據(jù)庫(kù)中對(duì)象的所有者。
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
[@objname =] 'object'
當(dāng)前數(shù)據(jù)庫(kù)中現(xiàn)有的表、視圖或存儲(chǔ)過(guò)程的名稱(chēng)。object 的數(shù)據(jù)類(lèi)型為 nvarchar(517),沒(méi)有默認(rèn)值。object 可用現(xiàn)有對(duì)象所有者限定,格式為 existing_owner.object。
[@newowner =] 'owner'
即將成為對(duì)象的新所有者的安全帳戶(hù)的名稱(chēng)。owner 的數(shù)據(jù)類(lèi)型為 sysname,沒(méi)有默認(rèn)值。owner 必須是當(dāng)前數(shù)據(jù)庫(kù)中有效的 Microsoft® SQL Server™ 用戶(hù)或角色或 Microsoft Windows NT® 用戶(hù)或組。指定 Windows NT 用戶(hù)或組時(shí),請(qǐng)指定 Windows NT 用戶(hù)或組在數(shù)據(jù)庫(kù)中已知的名稱(chēng)(用 sp_grantdbaccess 添加)。
0(成功)或 1(失?。?/P>
對(duì)象所有者(或擁有對(duì)象的組或角色的成員)對(duì)對(duì)象有特殊的權(quán)限。對(duì)象所有者可以執(zhí)行任何與對(duì)象有關(guān)的 Transact-SQL 語(yǔ)句(例如 INSERT、UPDATE、DELETE、SELECT 或 EXECUTE),也可以管理對(duì)象的權(quán)限。
如果擁有對(duì)象的安全帳戶(hù)必須要除去,但同時(shí)要保留該對(duì)象,請(qǐng)使用 sp_changeobjectowner 更改對(duì)象所有者。該過(guò)程從對(duì)象中刪除所有現(xiàn)有權(quán)限。在運(yùn)行 sp_changeobjectowner 之后,需要重新應(yīng)用要保留的任何權(quán)限。
由于這個(gè)原因,建議在運(yùn)行 sp_changeobjectowner 之前,編寫(xiě)現(xiàn)有權(quán)限的腳本。一旦更改了對(duì)象的所有權(quán),可能要使用該腳本重新應(yīng)用權(quán)限。在運(yùn)行該腳本之前需要在權(quán)限腳本中修改對(duì)象所有者。有關(guān)編寫(xiě)數(shù)據(jù)庫(kù)腳本的更多信息,請(qǐng)參見(jiàn)編寫(xiě)數(shù)據(jù)庫(kù)文檔和腳本。
可以使用 sp_changedbowner 更改數(shù)據(jù)庫(kù)的所有者。
只有 sysadmin 固定服務(wù)器角色和 db_owner 固定數(shù)據(jù)庫(kù)角色成員,或既是 db_ddladmin 固定數(shù)據(jù)庫(kù)角色又是 db_securityadmin 固定數(shù)據(jù)庫(kù)角色的成員,才能執(zhí)行 sp_changeobjectowner。
下面的示例將 authors 表的所有者改為 Corporate\GeorgeW。
EXEC sp_changeobjectowner 'authors', 'Corporate\GeorgeW'
相關(guān)文章