變更目前資料庫中的物件擁有者。
Transact-SQL 語法慣例
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
目前資料庫中現有資料表、檢視、使用者自訂函數或預存程序的名稱。object 是 nvarchar(776),沒有預設值。如果結構描述與其擁有者同名,object 就可以採用現有物件的擁有者名稱,其格式為 existing_owner.object。
這是即將成為物件新擁有者的安全性帳戶名稱。owner 是 sysname,沒有預設值。owner 必須是有效的資料庫使用者、伺服器角色、Microsoft Windows 登入,或是有權存取目前資料庫的 Windows 群組。如果新擁有者是一個 Windows 使用者或是沒有對應資料庫層級主體的 Windows 群組,就會建立一個資料庫使用者。
0 (成功) 或 1 (失敗)
sp_changeobjectowner 會從物件移除所有現有的權限。在執行 sp_changeobjectowner 之後,您必須重新套用您要保留的任何權限。因此,我們建議您在執行 sp_changeobjectowner 之前,先編寫現有權限的指令碼。待物件擁有權變更之後,您就可以利用指令碼,重新套用權限了。在執行之前,您必須先修改權限指令碼中的物件擁有者。如需有關編寫資料庫指令碼的詳細資訊,請參閱<記錄和編寫資料庫的指令碼>。
若要變更安全性實體的擁有者,請使用 ALTER AUTHORIZATION。若要變更結構描述,請使用 ALTER SCHEMA。
需要 db_owner 固定資料庫角色中的成員資格,或是 db_ddladmin 固定資料庫角色和 db_securityadmin 固定資料庫角色中的成員資格,以及該物件的 CONTROL 權限。
下列範例會將 authors 表格的擁有者改為 Corporate\GeorgeW。
authors
Corporate\GeorgeW
EXEC sp_changeobjectowner 'authors', 'Corporate\GeorgeW'; GO