sp_changedbowner (Transact-SQL)
适用于:SQL Server
更改当前数据库的所有者。
重要
在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 ALTER AUTHORIZATION 。
语法
sp_changedbowner [ @loginame = ] 'login'
[ , [ @map = ] remap_alias_flag ]
参数
[ @loginame= ] 'login'
当前数据库的新所有者的登录 ID。 login 为 sysname,没有默认值。 登录 名必须是现有的 SQL Server 登录名或 Windows 用户。 如果当前数据库已通过数据库中的现有用户安全帐户访问数据库,则登录 名不能成为当前数据库的所有者。 为了避免发生上述情况,请首先删除当前数据库内的用户。
[ @map= ] remap_alias_flag
remap_alias_flag参数已弃用,因为已从 SQL Server 中删除登录别名。 使用 remap_alias_flag 参数不会导致错误,但不起作用。
返回代码值
0(成功)或 1(失败)
注解
执行 sp_changedbowner 之后,新所有者称为数据库中的 dbo 用户。 dbo 拥有执行数据库中所有活动的暗示性权限。
不能更改 master、model 或 tempdb 系统数据库的所有者。
若要显示有效 登录 值的列表,请执行sp_helplogins存储过程。
仅执行sp_changedbowner,登录参数将数据库所有权更改为登录。
使用 ALTER AUTHORIZATION 语句可以更该任意安全对象的所用者。 有关详细信息,请参阅 ALTER AUTHORIZATION (Transact-SQL)。
权限
要求具有对数据库的 TAKE OWNERSHIP 权限。 如果新所有者在数据库中具有对应的用户,则要求具有对登录名的 IMPERSONATE 权限,否则要求具有对服务器的 CONTROL SERVER 权限。
示例
以下示例将登录名 Albert
设为当前数据库的所有者。
EXEC sp_changedbowner 'Albert';
另请参阅
安全存储过程 (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)
sp_dropalias (Transact-SQL)
sp_dropuser (Transact-SQL)
sp_helpdb (Transact-SQL)
sp_helplogins (Transact-SQL)
系统存储过程 (Transact-SQL)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈