sp_changeobjectowner (Transact-SQL)

适用于:SQL Server (所有受支持的版本)

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

重要

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

重要

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

主题链接图标Transact-SQL 语法约定

语法

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

参数

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

[ @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)