您的位置:首页 > 数据库

SQL Server 2005更改当前数据库的所有者

2014-09-15 10:49 225 查看



语法

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 权限。



示例

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

use [GoodLuck]

EXEC sp_changedbowner 'sa'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: