sp_changedbowner (Transact-SQL)
适用范围:SQL Server
更改当前数据库的所有者。
重要
在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 ALTER AUTHORIZATION 。
语法
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
具有执行数据库中所有活动的隐含权限。
无法更改或系统数据库的所有者master
model
tempdb
。
若要显示有效 @loginame 值的列表,请执行 sp_helplogins
存储过程。
仅使用 @loginame 参数执行sp_changedbowner
会将数据库所有权更改为@loginame。
可以使用语句更改任何安全对象的 ALTER AUTHORIZATION
所有者。 有关详细信息,请参阅 ALTER AUTHORIZATION。
权限
需要对数据库拥有 TAKE OWNERSHIP
权限。 如果新所有者在数据库中具有相应的用户,则需要 IMPERSONATE
对登录名具有权限,否则需要 CONTROL SERVER
对服务器具有权限。
示例
以下示例将登录名 Albert
设为当前数据库的所有者。
EXEC sp_changedbowner 'Albert';