4

我们的一个构建服务器刚刚更新到最新的“用于数据库工具的 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 的兼容性(网上还有其他迹象表明同样的问题),但我的问题是:我该如何解决它?

我宁愿不尝试降级到以前的 SSDT 版本,但如有必要会这样做。我应该安装最新的数据层应用程序框架并改用它的 SqlPackage.exe 吗?还是安装 Visual Studio 2015?

4

2 回答 2

5

这是最近的 SSDT 更新中引入的问题。它已在内部修复,并计划包含在 SSDT 的下一个 (16.4) 版本中。SSDT 版本最初是通过SSDT 下载页面发布的,并在SSDT 团队博客上提供通知,然后在 2-3 周内推出 Visual Studio 扩展和更新(因为这在单独的 VS 范围内进行)。

  • 注意:对于 VS2013 版本,请到下载站点的“以前的版本”页面。SSDT 继续针对 VS2013 进行更新,但下载页面已针对用户进行了优化以获得最新版本的 Visual Studio。

披露:我在 SSDT 团队工作

于 2016-09-07T01:33:07.367 回答
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 不向后兼容,那么我会为它提出一个连接项,看看它是否是一个错误,如果不是,那么如果有这种事情的通知并且连接项应该得到滚动,那就太好了。

埃德

于 2016-09-06T18:23:07.260 回答