无法部署包无法连接到主服务器或目标服务器您必须在主服务器或目标服务器上有一个密码相同的用户

问题描述

我在 Azure DevOps 中使用自托管代理 (Windows 2019) 和 sql Server 2019。我正在使用“sql Server 数据库部署”任务。并尝试使用使用 VS2019 创建的数据库项目部署 dacpac。我收到一个错误

无法部署程序包。无法连接到主服务器或目标服务器。您必须在主服务器或目标服务器上有一个密码相同的用户。”>

当我查看任务日志时,sqlPackage.exe 是从以下路径执行的。

“C:\Program Files (x86)\Microsoft sql Server\140\DAC\bin\sqlPackage.exe”

但以下路径中缺少 DAC 文件

“C:\Program Files (x86)\Microsoft sql Server\150”

当我检查代理池的能力时,它显示 sqlPackage 的路径为

"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\Extensions\Microsoft\sqlDB\DAC\140\sqlPackage.exe"。

但是 sqlPackage.exe 也可以在下面的路径中使用

“C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\Extensions\Microsoft\sqlDB\DAC\150”

一些链接说这是已知问题。并且一些链接建议使用 Powershell 任务而不是“sql Server 数据库部署”任务。

请任何人告诉我如何解决这个问题。

解决方法

“SQL Server 数据库部署任务”是指 WinRM SQL Server 数据库部署任务还是 Azure SQL 数据库部署任务? 在这里,关于您的问题,我们有一些建议:

  1. 确保 SQL Server 正在运行
  2. 使用正确的 SQL Server 连接名称
  3. 仔细检查 SQL Server 用户名/密码
  4. SQL Server 用户需要正确的服务器角色
  5. 尝试将 Microsoft.SqlServer.DacFx.x64 包从 140.3745.1 升级到最新的稳定版。
  6. 或者您可以尝试将 dacpac 兼容性从 150 更改为 140。