sp_changedbowner (Transact-SQL)

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

注意注意

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

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

语法

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

参数

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

  • [ @map = ] remap_alias_flag
    由于已从 SQL Server 中清除了登录别名,因此建议不要使用 remap_alias_flag 参数。使用 remap_alias_flag 参数虽然不会引发错误,但也没有任何效果。

返回代码值

0(成功)或 1(失败)

注释

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

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

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

仅使用 login 参数执行 sp_changedbowner 将会把数据库所有权转给 login。

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

权限

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

示例

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

EXEC sp_changedbowner 'Albert'