尝试将DACPAC应用于Azure SQL数据库时,我从sqlpackage.exe获取以下内容:
***部署计划生成期间发生错误。部署无法继续。 Element或Annotation类SqlDatabaseOptions不包含Property类CatalogCollation。
我设法使用带有SSDT的VS2017创建一个包,然后使用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任务运行它并获得相同的结果。
我已经尝试映射this window中的命令行开关,但是我仍然遇到同样的错误。
是否有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
答案 0 :(得分:2)
您可能需要在计算机上更新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找到它。
答案 1 :(得分:1)
Azure SQL是PaaS服务,这意味着它透明地接收更新,并且相对经常以新的兼容性级别进行接收。
Azure SQL现在为150。
创建新数据库时,将使用最新版本进行配置。
但是,您的计算机,部署代理可能未部署最新的工具。
如果工具与数据库的兼容性级别不匹配,则部署将失败。
如果使用VSTS托管代理进行部署,则不受您的控制,它将始终滞后。在这种情况下,最简单的解决方法是降低数据库的兼容性级别。
这非常容易,因为您只需要在数据库上运行SQL语句,如下所示:
ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = 130;