最新的SSDT与SQL Server 2014的SqlPackage不兼容

时间:2016-09-06 17:19:11

标签: sql-server sql-server-2014 sql-server-data-tools sqlpackage

我们的一个构建服务器刚刚更新到最新的“用于数据库工具的Microsoft SQL Server更新”(版本12.0.60629.0),现在与我们的SqlPackage.exe版本不兼容(在C:\ Program Files中) (x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ DAC \ 120 \ SqlPackage.exe)。 SQL Server数据库项目(针对SQL Server 2014)构建没有错误,但是当我们尝试使用SqlPackage.exe将.dacpac部署到目标服务器时,我们收到以下错误:

The Element or Annotation class PersistedResolvableAnnotation does 
    not contain the Property class Length.

果然,将model.xml文件(在.dacpac中)与最新版本的成功构建进行比较,我在一些Annotation元素下看到了额外的“Length”和“Offset”属性:

<Annotation Type="PersistedResolvableAnnotation" Name="[$(MyLinkedServer)].[$(MyDatabase)]|[dbo].[SomeTableName]">
    <Property Name="TargetTypeStorage" Value="ISqlSynonymTarget" />
    <Property Name="Length" Value="63" />
    <Property Name="Offset" Value="37" />
</Annotation>

这些构建服务器只有Visual Studio 2012和2013,不是 2015.似乎相当清楚这个最新的SSDT更新破坏了与SqlPackage的兼容性(还有其他indications在线同样的问题),但我的问题是:我该如何解决?

我宁愿不尝试降级到之前的SSDT版本,但如有必要,也会这样做。我应该安装latest数据层应用程序框架并使用其SqlPackage.exe吗?或者安装Visual Studio 2015?

2 个答案:

答案 0 :(得分:4)

这是最近的SSDT更新中引入的问题。它已在内部修复,目标是包含在SSDT的下一个(16.4)版本中。 SSDT版本最初通过SSDT download page通过SSDT Team Blog上的通知发布,然后在2-3周内通过Visual Studio扩展和更新推出(因为这是在单独的VS范围的时间表上)。

  • 注意:对于VS2013版本,请转到&#34;以前的版本&#34;下载网站上的页面。 SSDT继续针对VS2013进行更新,但下载页面已针对用户进行了优化,以获取最新版本的Visual Studio。

披露:我在SSDT团队工作

答案 1 :(得分:2)

在构建服务器上安装最新的DacFx,或者从使用msi中的sqlpackage.exe更改为DacFx usnig的nuget版本:

https://blogs.msdn.microsoft.com/ssdt/2016/08/22/releasing-ssdt-with-visual-studio-15-preview-4-and-introducing-ssdt-msbuild-nuget-package/

如果这使dacpac不向后兼容,那么我会为它提出一个连接项并查看它是否是一个bug,如果不是这样会有通知这种事情和连接项应该是好的滚动。