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

导入本地SQL数据库.bacpac到Azure SQL Server失败,遇15063错误求助

解决Azure SQL Server导入.bacpac时"The login already has an account under a different user name"错误

你猜的完全正确!这个报错的核心原因就是你要导入的本地数据库备份(.bacpac)里,已经存在一个名为[abc]的数据库用户,而Azure SQL Server上的服务器管理员登录[abc]的安全标识符(SID),和本地数据库中那个[abc]用户的SID不匹配。SQL Server不允许同一个登录映射到不同SID的数据库用户,所以执行CREATE USER [abc] FOR LOGIN [abc];时就触发了错误。

下面给你几个可行的解决办法,按操作复杂度排序:

方法一:直接在Azure上修复(最快)

既然你用的是服务器管理员账号,它默认拥有所有数据库的dbo权限,其实根本不需要额外创建[abc]数据库用户。你可以按以下步骤操作:

  1. 先尝试完成导入(哪怕报错,通常数据库已经部分创建成功了)
  2. 用你的管理员账号[abc]连接到目标数据库
  3. 执行SQL命令删除冲突的本地用户:
    DROP USER IF EXISTS [abc];
    
  4. 之后你就能正常以管理员身份访问数据库,因为管理员会自动映射为数据库的dbo用户

方法二:修改.bacpac文件再导入(适合提前规避)

如果希望导入后的用户结构更贴合本地,你可以提前修改.bacpac文件:

  1. 把.bacpac文件的后缀改成.zip,解压到一个文件夹
  2. 找到解压后的model.xml文件,用文本编辑器打开
  3. 搜索<User Name="abc">节点,删除整个用户相关的内容(包括它的角色关联、权限设置等)
  4. 把修改后的文件重新压缩成.zip,改回.bacpac后缀,再用SSMS导入

方法三:换用Azure Portal导入

有时候SSMS的导入工具对权限冲突的处理不够灵活,你可以试试Azure Portal的导入功能:

  1. 登录Azure Portal,进入你的SQL Server实例
  2. 在左侧菜单选择「导入数据库」
  3. 选择存储账户中的.bacpac文件,设置目标数据库名称
  4. 按照向导完成导入,Azure会自动处理部分常见的权限冲突,或者给出更明确的调整提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:27:00