sp_changeobjectowner (Transact-SQL)

适用于:SQL Server

更改当前数据库中对象的所有者。

重要

此存储过程仅适用于 Microsoft SQL Server 2000 (8.x) 中可用的对象。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 ALTER SCHEMAALTER AUTHORIZATION sp_changeobjectowner更改架构和所有者。 为了保持与早期版本的 SQL Server 的兼容性,此存储过程仅在当前所有者和新所有者拥有与其数据库用户名同名的架构时更改对象所有者。

重要

已经将新的权限要求添加到此存储过程。

Transact-SQL 语法约定

语法

  
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'  

参数

[ @objname = ] 'object' 当前数据库中现有表、视图、用户定义的函数或存储过程的名称。 对象 是 nvarchar (776),没有默认值。 可以使用现有对象的所有者限定对象,格式为 existing_owner。如果架构及其所有者具有相同的名称,则对象

[ @newowner = ] 'owner_ ' 将成为该对象的新所有者的安全帐户的名称。 ownersysname,无默认值。 所有者 必须是有权访问当前数据库的有效数据库用户、服务器角色、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 SCHEMA (Transact-SQL)
ALTER DATABASE (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
sp_changedbowner (Transact-SQL)
系统存储过程 (Transact-SQL)