You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

恢复数据库后创建dba用户失败(错误15063)如何解决?

解决SQL Server数据库所有者变更与用户创建错误15063的问题

错误原因解析

执行 sp_changedbowner 'dba', true 后,登录名 dba 已经与目标数据库的 dbo 用户建立了一对一的映射关系(SQL Server 中,数据库所有者对应的默认用户就是 dbo,无论登录名是什么)。此时你尝试创建同名的 dba 数据库用户,就会触发错误15063——因为一个登录名在同一数据库内只能映射到一个用户。

分步解决方法

1. 解决无法以dba身份登录的问题

首先排查登录名 dba 的状态和权限:

  • 检查登录名是否被禁用:
    在服务器级别执行以下查询:
    SELECT name, is_disabled 
    FROM sys.server_principals 
    WHERE name = 'dba';
    
    如果返回的 is_disabled 值为1,执行以下语句启用登录名:
    ALTER LOGIN dba ENABLE;
    
  • 验证登录名与数据库用户的映射关系:
    切换到目标数据库,执行查询确认映射:
    SELECT dp.name AS 数据库用户, sp.name AS 登录名
    FROM sys.database_principals dp
    JOIN sys.server_principals sp ON dp.sid = sp.sid
    WHERE dp.name = 'dbo';
    
    正常情况下,登录名 列应显示为 dba,说明映射正确——此时 dba 作为数据库所有者,默认拥有该数据库的全部权限,无需额外创建用户。

2. 若需数据库内存在名为dba的用户而非dbo

如果你明确需要数据库中存在名为 dba 的用户,同时让其成为数据库所有者,执行以下步骤:

  • 先将数据库所有者改回原有登录名(例如 sa):
    EXEC sp_changedbowner 'sa';
    
  • 删除数据库中可能存在的 dba 用户(若有):
    DROP USER IF EXISTS dba;
    
  • 创建映射到登录名dba的数据库用户:
    CREATE USER dba FOR LOGIN dba;
    
  • 将数据库所有者设置为该dba用户:
    ALTER AUTHORIZATION ON DATABASE::[你的数据库名称] TO dba;
    
    完成后,登录名dba即可访问数据库,且数据库内的所有者用户名为dba。

内容的提问来源于stack exchange,提问作者MurraySobol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:15:35