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

无法将DACPAC发布到本地SQL Server容器:外部用户登录无效

问题概述

我们有一个Azure SQL Server数据库,计划通过SQL数据库项目优化CI/CD工作流,流程为从生产数据库生成DACPAC后部署到本地开发容器。已安装Azure Data Studio的Database Projects扩展,Docker正常运行,操作及遇到的问题如下:

  • 在Database Projects扩展中从Azure现有生产库创建项目,选择「架构/对象类型」文件夹结构,启用SDK风格项目。
  • 构建项目无错误,但产生357条警告,多为对象引用大小写差异(SQL71558)或未解析引用(SQL71502)。
  • 发布到本地SQL Server容器时,Deploy dacpac阶段失败,错误信息:

Deploy dacpac: 无法部署包。
Warning SQL0: 指定SQL Server 2019为目标平台的项目可能与SQL Server 2017存在兼容性问题。
Warning SQL0: 源包含依赖外部身份验证提供程序的用户,目标不支持该提供程序,这些用户将被视为无登录名的用户。
Error SQL72014: Core Microsoft SqlClient Data Provider: Msg 15007, Level 16, State 1, Line 1 'DATAFACTORY'不是有效登录名或您无权限。
Error SQL72045: 脚本执行错误。执行的脚本:CREATE USER [DATAFACTORY] FOR LOGIN [DATAFACTORY];

后续将目标平台改为Azure SQL Server,使用Azure SQL Database emulator full镜像发布,仍出现相同错误:

Deploy dacpac: 无法部署包。
Warning SQL0: 源包含依赖外部身份验证提供程序的用户,目标不支持该提供程序,这些用户将被视为无登录名的用户。
Error SQL72014: Core Microsoft SqlClient Data Provider: Msg 15007, Level 16, State 1, Line 1 'DATAFACTORY'不是有效登录名或您无权限。
Error SQL72045: 脚本执行错误。执行的脚本:CREATE USER [DATAFACTORY] FOR LOGIN [DATAFACTORY];

已尝试添加master数据库引用,且在Azure Data Studio、VS Code、Visual Studio 2019中均进行测试。

解决方案

1. 修复DATAFACTORY用户部署错误

生产库中的DATAFACTORY用户依赖Azure AD等外部身份验证提供程序,本地容器/emulator不支持这类登录,可通过以下方式解决:

  • 修改用户定义脚本:找到项目中Security/Users目录下的DATAFACTORY用户文件,将内容改为无登录名的用户定义:
    CREATE USER [DATAFACTORY] WITHOUT LOGIN;
    
  • 配置发布忽略登录关联:在发布向导的「高级」选项中,勾选「忽略登录名」(对应IgnoreLoginSids部署参数),避免DACPAC尝试创建关联的外部登录。
  • 移除不必要用户:若开发环境无需该用户,直接删除项目中DATAFACTORY用户的定义文件。

2. 解决目标平台兼容性警告

  • 匹配容器/emulator版本:若使用SQL Server 2017容器,将项目目标平台改为SQL Server 2017;若使用Azure SQL emulator,将项目目标平台设为Azure SQL Database(选择对应版本)。
  • 清除旧构建文件后重新构建发布,避免缓存的旧DACPAC影响部署。

3. 处理构建阶段警告

  • SQL71558(大小写差异):统一项目中对象引用的大小写,与生产库中对象名称的大小写保持一致。
  • SQL71502(未解析引用):针对未解析的对象,添加对应数据库引用:
    1. 在项目右键菜单选择「添加」→「数据库引用」
    2. 选择系统数据库(如master)或依赖库的DACPAC,确保引用的目标平台与当前项目匹配。

4. 优化发布配置

  • 使用容器高权限账户部署:发布到本地容器时,使用SA账户或具有足够权限的SQL身份验证账户,确保能创建用户等对象。
  • 简化emulator配置:Azure SQL emulator开发环境建议使用SQL身份验证,避免AD相关配置复杂度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:07:49