您的位置:首页 > 数据库

关于ms sql server的所有者及修改数据库对象的所有者

2010-03-08 23:32 405 查看
数据库所有者
dbo是具有在数据库中执行所有活动的暗示性权限的用户,将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。
如果用户 laone是固定服务器角色 sysadmin 的成员,并创建表 Table1,则表 Table属于 dbo,并以 dbo.Talble 而不是 laone.Table1 进行限定。相反,如果 laone不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 Table1,则 Table1属于 laone,并限定为 laone.Table1。
无法删除 dbo 用户,且此用户始终出现在每个数据库中。只有由 sysadmin 固定服务器角色成员(或 dbo 用户)创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户(包括 db_owner 固定数据库角色成员)创建的对象:属于创建该对象的用户,而不是 dbo,用创建该对象的用户名限定。
如何修改数据库的所有者
更改当前数据库的所有者。

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

参数
[@loginame =] 'login'

当前数据库新所有者的登录 ID。login 为 sysname,没有默认值。login 必须是已存在的 SQL Server 登录或 Windows 用户。如果 login 通过当前数据库内的现有别名或用户安全帐户已拥有访问该数据库的权限,则不能成为该数据库的所有者。为了避免这种情况,应先除去当前数据库中的别名或用户。

[@map =] remap_alias_flag

值为 true 或 false,表示旧数据库所有者 (dbo) 的现有别名是映射到当前数据库的新所有者还是要除去。remap_alias_flag 的数据类型为 varchar(5),默认值为 NULL,表示旧 dbo 的任何现有别名均映射到当前数据库的新所有者。false 表示除去旧数据库所有者的现有别名。

返回代码值
0(成功)或 1(失败)

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

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

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

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

权限
只有 sysadmin 固定服务器角色的成员可以执行 sp_changedbowner。

示例
下面的示例使用户 Albert 成为当前数据库的所有者,并将旧数据库所有者的现有别名映射到 Albert。

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