通过 PowerShell 从本地 SQL Server 2016 将 dacpac 发布到 Azure SQL 托管实例失败“无法发布到 SQL Server 2014”

Posted

技术标签:

【中文标题】通过 PowerShell 从本地 SQL Server 2016 将 dacpac 发布到 Azure SQL 托管实例失败“无法发布到 SQL Server 2014”【英文标题】:Publishing dacpac to Azure SQL Managed Instance from on prem SQL Server 2016 via PowerShell failing "cannot publish to SQL Server 2014" 【发布时间】:2021-09-02 23:26:41 【问题描述】:

我正在尝试使用下面的 PowerShell 将从 prem 服务器上的 SQL Server 2016 中提取的 dacpac 发布到 Azure SQL 托管实例,但这失败了下面的错误。

SqlPackage.exe /SourceFile:$DacPacFilePathName /Action:Publish /TargetServerName:$DatabaseServer /TargetDatabaseName:$DatabaseName /TargetUser:$User /TargetPassword:$Password

    SqlPackage.exe : *** An error occurred during deployment plan generation. Deployment cannot continue.
    At line:9 char:1
    + SqlPackage.exe /SourceFile:$DacPacFilePathName /Action:Publish /Targe ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (*** An error oc...annot continue.:String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError

A project which specifies SQL Server 2016 as the target platform cannot be published to SQL Server 2014.

如果我在 Azure 托管实例中创建一个新数据库并从中创建一个 dacpac,我可以使用相同的 PowerShell 命令来发布它并且它工作正常。

任何想法是什么导致了这个问题?

【问题讨论】:

【参考方案1】:

错误已经在试图解释问题

将 SQL Server 2016 指定为目标平台的项目 无法发布到 SQL Server 2014。

所以here你可以在使用DataPacs时找到目标更改的Microsoft页面。

【讨论】:

【参考方案2】:

解决了这个问题。

我们的部署服务器上的 $env:Path 设置为使用 SQLDB\DAC\140\SqlPackage.exe,但 SQL 托管实例仅适用于 SQLDB\DAC\150\SqlPackage.exe

【讨论】:

以上是关于通过 PowerShell 从本地 SQL Server 2016 将 dacpac 发布到 Azure SQL 托管实例失败“无法发布到 SQL Server 2014”的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PowerShell 运行 SQL Server 查询?

Mysql数据库从本地导出 服务器上导入时报 ERROR 2005 HY000 Unknown MySQL ser

尝试使用 powershell 从 Azure 还原数据库时,Octopus 部署找不到 SQL 凭据

Powershell Install SQL Server 2022

Powershell Install SQL Server 2022

添加第一个域用户的 PowerShell 脚本 [权限问题]