sp_changedbowner (Transact-SQL)

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

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

语法

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

参数

  • [ @loginame= ] 'login'
    当前数据库的新所有者的登录 ID。login 的数据类型为 sysname,无默认值。login 必须是一个已有的 SQL Server 登录名,或者是 Microsoft Windows 用户。如果 login 已通过数据库内现有的别名或用户安全帐户访问了数据库,则该登录名不能成为当前数据库的所有者。为了避免发生上述情况,请首先删除当前数据库内的别名或用户。
  • [ @map= ] remap_alias_flag
    truefalse,它指示已分配给旧的数据库所有者 (dbo) 的现有别名是映射到了当前数据库的新所有者,还是已被删除。remap_alias_flag 的数据类型为 varchar(5),默认值为 NULL。这指示旧的 dbo 的任意现有别名都映射到当前数据库的新所有者。false 指示删除旧的数据库所有者的现有别名。

返回代码值

0(成功)或 1(失败)

备注

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

不能更改 mastermodeltempdb 系统数据库的所有者。

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

执行只有 login 参数的 sp_changedbowner 会将数据库所有权改为 login,并将先前分配给 dbo 的用户别名映射到这一新的数据库所有者。

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

权限

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

示例

以下示例将登录名 Albert 作为当前数据库的所有者,并映射到已分配给旧的数据库所有者的 Albert 现有别名。

EXEC sp_changedbowner 'Albert'

请参阅

参考

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

帮助和信息

获取 SQL Server 2005 帮助