sp_changeobjectowner (Transact-SQL)
適用於:SQL Server
變更目前資料庫中對象的擁有者。
重要
此預存程式僅適用於 SQL Server 2000 (8.x) 中可用的物件。 SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 ALTER SCHEMA 或 ALTER AUTHORIZATION 。 sp_changeobjectowner
變更架構和擁有者。 為了保留與舊版 SQL Server 的相容性,此預存程式只會在目前擁有者和新擁有者擁有與資料庫用戶名稱相同的架構時變更對象擁有者。
語法
sp_changeobjectowner
[ @objname = ] N'objname'
, [ @newowner = ] N'newowner'
[ ; ]
引數
[ @objname = ] N'objname'
@objname為 nvarchar(776),沒有預設值。
目前資料庫中現有數據表、檢視表、用戶定義函數或預存程式的名稱。 @objname是 nvarchar(776),沒有預設值。 如果架構及其擁有者具有相同名稱,<existing_owner>.<object_name>
則@objname可以與現有對象的擁有者一起限定。
[ @newowner = ] N'newowner'
將成為物件新擁有者的安全性帳戶名稱。 @newowner為 sysname,沒有預設值。 @newowner必須是具有目前數據庫存取權的有效資料庫用戶、伺服器角色、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