sp_changedbowner (Transact-SQL)

适用于:SQL Server

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

重要

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 ALTER AUTHORIZATION

Transact-SQL 语法约定

语法

  
sp_changedbowner [ @loginame = ] 'login'  
     [ , [ @map = ] remap_alias_flag ]  

参数

[ @loginame= ] 'login'
当前数据库的新所有者的登录 ID。 loginsysname,没有默认值。 登录 名必须是现有的 SQL Server 登录名或 Windows 用户。 如果当前数据库已通过数据库中的现有用户安全帐户访问数据库,则登录 名不能成为当前数据库的所有者。 为了避免发生上述情况,请首先删除当前数据库内的用户。

[ @map= ] remap_alias_flag
remap_alias_flag参数已弃用,因为已从 SQL Server 中删除登录别名。 使用 remap_alias_flag 参数不会导致错误,但不起作用。

返回代码值

0(成功)或 1(失败)

注解

执行 sp_changedbowner 之后,新所有者称为数据库中的 dbo 用户。 dbo 拥有执行数据库中所有活动的暗示性权限。

不能更改 master、model 或 tempdb 系统数据库的所有者。

若要显示有效 登录 值的列表,请执行sp_helplogins存储过程。

仅执行sp_changedbowner,登录参数将数据库所有权更改为登录

使用 ALTER AUTHORIZATION 语句可以更该任意安全对象的所用者。 有关详细信息,请参阅 ALTER AUTHORIZATION (Transact-SQL)

权限

要求具有对数据库的 TAKE OWNERSHIP 权限。 如果新所有者在数据库中具有对应的用户,则要求具有对登录名的 IMPERSONATE 权限,否则要求具有对服务器的 CONTROL SERVER 权限。

示例

以下示例将登录名 Albert 设为当前数据库的所有者。

EXEC sp_changedbowner 'Albert';  

另请参阅

安全存储过程 (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
sp_dropalias (Transact-SQL)
sp_dropuser (Transact-SQL)
sp_helpdb (Transact-SQL)
sp_helplogins (Transact-SQL)
系统存储过程 (Transact-SQL)