sp_changeobjectowner (Transact-SQL)
變更目前資料庫中的物件擁有者。
重要事項 |
---|
這個預存程序只能搭配使用 Microsoft SQL Server 2000 中的物件。未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 ALTER SCHEMA 或 ALTER AUTHORIZATION。sp_changeobjectowner 會變更結構描述和擁有者。為了保留與舊版 SQL Server 的相容性,當目前擁有者和新擁有者同時擁有與資料庫使用者同名的結構描述時,這個預存程序只會變更物件擁有者。 |
重要事項 |
---|
新的權限需求已經加入這個預存程序中。 |
適用於:SQL Server (SQL Server 2008 至目前版本)。 |
語法
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
引數
[ @objname = ] 'object'
這是目前資料庫中現有資料表、檢視表、使用者定義函數或預存程序的名稱。 object 是 nvarchar(776),沒有預設值。 如果結構描述與其擁有者同名,object 就可以採用現有物件的擁有者來限定,其格式為 existing_owner**.**object。[ @newowner=] **'**owner '
這是即將成為物件新擁有者的安全性帳戶名稱。 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。
EXEC sp_changeobjectowner 'authors', 'Corporate\GeorgeW';
GO
請參閱
參考
ALTER AUTHORIZATION (Transact-SQL)