使用Azure DevOps部署Visual Studio生成的dacpac至Azure SQL数据库时出错求助
你在Visual Studio生成DEV环境Azure SQL的.dacpac文件后,通过Azure DevOps构建和发布流水线向PROD环境推广变更时,遇到如下错误:
"Rejected updates were rejected because the remote contains work that you do not have locally. This is usually caused by another repository pushing to the same ref. You may want to first integrate the remote changes before pushing again"
可以通过以下步骤解决:
检查流水线代码拉取配置
进入Azure DevOps构建流水线的编辑页面,找到源代码拉取的设置项,确保选择了清理本地仓库或获取最新变更并合并的策略。避免流水线仅拉取历史快照而不同步远程最新代码。本地同步远程仓库后重新推送
如果是本地生成.dacpac后推送到仓库触发流水线,先在本地执行命令同步远程变更:git fetch origin git pull origin <你的目标分支名>手动解决可能出现的合并冲突后,重新提交并推送.dacpac文件,再触发流水线。
排查分支并发操作
确认是否有其他流水线、自动化脚本或团队成员正在向同一个分支推送变更。协调操作顺序,避免同时修改同一分支导致的冲突。改用直接部署.dacpac的方式
放弃通过仓库传递.dacpac的方式,在Azure DevOps构建流水线中添加SQL Server Database Deployment任务,直接使用构建阶段生成的.dacpac文件部署到PROD环境。这种方式跳过仓库同步环节,能从根源避免这类冲突问题。
内容的提问来源于stack exchange,提问作者Nilesh Patel

