sp_changeobjectowner (Transact-SQL)

适用范围:SQL Server

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

重要

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

Transact-SQL 语法约定

语法

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'

将成为对象的新所有者的安全帐户的名称。 @newownersysname,无默认值。 @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