1

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

*** 生成部署计划时出错。部署无法继续。Element 或 Annotation 类 SqlDatabaseOptions 不包含 Property 类 CatalogCollat​​ion。

我已经设法将 VS2017 与 SSDT 一起使用来创建一个包,然后使用 SQL Server 对象资源管理器将其部署到另一个数据库,但是当我使用 sqlpackage.exe 时它失败了

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130

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

我已经尝试映射在此窗口中找到的命令行开关,但我仍然得到同样的错误。

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

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

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130>sqlpackage.exe /SourceFile:"generated.dacpac" /Action:Publish /TargetServerName:"xxxxxxx.database .windows.net" /TargetDatabaseName:"xxxxxxx" /TargetUser:"xxxxxx" /TargetPassword:"xxxxxxx" /TargetTimeout:120

4

2 回答 2

2

看来您可能需要更新计算机上的 Microsoft SQL Server 数据层应用程序框架。请在此处下载最新版本。安装后,您将在以下路径 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 找到它。

于 2018-05-13T22:10:52.383 回答
0

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

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

如果您使用 VSTS 托管代理进行部署,您将无法控制,并且它总是会落后一点。在这种情况下,最简单的解决方法是降低您的数据库兼容性级别。
这很容易,因为您只需要在数据库上运行 SQL 语句,如下所示:

ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL =  130;
于 2018-11-26T06:57:16.443 回答