代码之家  ›  专栏  ›  技术社区  ›  NeilCampbell

无法使用sqlpackage将DACPAC发布到Azure SQL数据库。exe文件

  •  1
  • NeilCampbell  · 技术社区  · 6 年前

    当尝试将DACPAC应用于Azure SQL数据库时,我从sqlpackage获得以下信息。exe文件:

    ***生成部署计划期间出错。部署无法继续。 元素或注释类SqlDatabaseOptions不包含属性类CatalogCollation。

    我成功地使用VS2017和SSDT创建了一个包,然后使用SQL Server对象资源管理器将其部署到另一个数据库,但使用sqlpackage时失败了。在中找到exe

    C: \程序文件(x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130

    Azure SQL数据库兼容性级别设置为140,因此我不确定SSDT(15.6.0版)是否使用更现代的SQLPackage版本。exe,或者我在哪里可以找到它?我还尝试从Azure SQL数据库部署VSTS任务中运行它,并获得相同的结果。

    我尝试映射中的命令行开关 this window 但我还是犯了同样的错误。

    是否有sqlpackage的版本。SSDT使用的exe,我找不到,或者它是我缺少的参数?

    作为参考,这是我使用的命令:

    C: \程序文件(x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130>sqlpackage。exe/SourceFile:“generated.dacpac”/操作:Publish/TargetServerName:“xxxxxxx.database.windows.net”/TargetDatabaseName:“xxxxxxx”/目标用户:“xxxxxx”/目标密码:“xxxxxxx”/目标超时:120

    2 回复  |  直到 6 年前
        1
  •  2
  •   Alberto Morillo    6 年前

    您可能需要更新计算机上的Microsoft SQL Server数据层应用程序框架。请下载最新版本 here 。安装后,您将在以下路径C中找到它:\Program Files(x86)\Microsoft SQL Server\130\DAC\bin\SqlPackage。exe和更新独立于SSDT/SSMS。

    SSMS有自己的SqlPackage版本。SSDT也有自己的版本,可以在C:\Program Files(x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130中找到。

        2
  •  0
  •   Suraj Rao Raas Masood    6 年前

    Azure SQL是一种PaaS服务,这意味着它以透明且相对频繁的方式接收更新,并具有新的兼容性级别。

    Azure SQL现在是150。
    创建新数据库时,将使用最新版本对其进行配置。 但是,您的机器、部署代理可能没有部署最新的工具。
    当工具与数据库的兼容性级别不匹配时,部署将失败。

    如果您使用VSTS Hosted Agent进行部署,您将无法控制,并且它将始终落后一点。在这种情况下,最简单的修复方法是降低数据库兼容性级别。
    这非常简单,因为您只需要在数据库上运行SQL语句,如下所示:

    ALTER DATABASE database_name
    SET COMPATIBILITY_LEVEL =  130;
    
    推荐文章