sp_changedbowner (Transact-SQL)

适用范围:SQL Server

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

重要

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

Transact-SQL 语法约定

语法

sp_changedbowner
    [ @loginame = ] N'loginame'
    [ , [ @map = ] 'map' ]
[ ; ]

参数

[ @loginame = ] N'loginame'

当前数据库的新所有者的登录 ID。 @loginame为 sysname,无默认值。 @loginame必须是现有的 SQL Server 登录名或 Windows 用户。 如果当前数据库已通过数据库中的现有用户帐户访问数据库,则@loginame无法成为当前数据库的所有者。 若要避免这种情况,请先删除当前数据库中的用户。

[ @map = ] 'map'

此参数已弃用,并维护脚本的向后兼容性。

返回代码值

0(成功)或 1(失败)。

注解

执行后 sp_changedbowner ,新所有者称为 dbo 数据库中的用户。 用户 dbo 具有执行数据库中所有活动的隐含权限。

无法更改或系统数据库的所有者mastermodeltempdb

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

使用 @loginame 参数执行sp_changedbowner会将数据库所有权更改为@loginame

可以使用语句更改任何安全对象的 ALTER AUTHORIZATION 所有者。 有关详细信息,请参阅 ALTER AUTHORIZATION

权限

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

示例

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

EXEC sp_changedbowner 'Albert';