SQL Server 2014 的最新 SSDT 与 SqlPackage 不兼容
Latest SSDT vs. SqlPackage incompatibility for SQL Server 2014
我们的一个构建服务器刚刚更新到最新的 "Microsoft SQL Server Update for database tooling"(版本 12.0.60629.0),现在与我们拥有的 SqlPackage.exe 版本不兼容(在 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC0\SqlPackage.exe)。 SQL 服务器数据库项目(目标 SQL Server 2014)构建没有错误,但是当我们尝试使用 SqlPackage.exe 将 .dacpac 部署到目标服务器时,我们收到以下错误:
The Element or Annotation class PersistedResolvableAnnotation does
not contain the Property class Length.
果然,将成功构建的 model.xml 文件(在 .dacpac 内)与最新的文件进行比较,我在一些注释元素下看到了额外的 "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?
在构建服务器上安装最新的 DacFx 或从使用 msi 中的 sqlpackage.exe 更改为 DacFx usnig 的 nuget 版本:
如果这使得 dacpac 不向后兼容,那么我会为它提出一个连接项,看看它是否是一个错误,如果不是,如果有此类事情的通知并且连接项应该得到那个会很好滚动。
埃德
这是最近的 SSDT 更新中引入的问题。它已在内部修复,目标是包含在 SSDT 的下一个 (16.4) 版本中。 SSDT 版本最初通过 SSDT download page with notifications on the SSDT Team Blog 发布,然后在 2-3 周内推出 Visual Studio 扩展和更新(因为这是在单独的 VS 范围内进行的)。
- 注意:对于 VS2013 版本,请转到下载站点的 "Previous Releases" 页面。 SSDT 继续为 VS2013 更新,但下载页面已针对用户进行优化以获取最新版本 Visual Studio.
披露:我在 SSDT 团队工作
我们的一个构建服务器刚刚更新到最新的 "Microsoft SQL Server Update for database tooling"(版本 12.0.60629.0),现在与我们拥有的 SqlPackage.exe 版本不兼容(在 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC0\SqlPackage.exe)。 SQL 服务器数据库项目(目标 SQL Server 2014)构建没有错误,但是当我们尝试使用 SqlPackage.exe 将 .dacpac 部署到目标服务器时,我们收到以下错误:
The Element or Annotation class PersistedResolvableAnnotation does
not contain the Property class Length.
果然,将成功构建的 model.xml 文件(在 .dacpac 内)与最新的文件进行比较,我在一些注释元素下看到了额外的 "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?
在构建服务器上安装最新的 DacFx 或从使用 msi 中的 sqlpackage.exe 更改为 DacFx usnig 的 nuget 版本:
如果这使得 dacpac 不向后兼容,那么我会为它提出一个连接项,看看它是否是一个错误,如果不是,如果有此类事情的通知并且连接项应该得到那个会很好滚动。
埃德
这是最近的 SSDT 更新中引入的问题。它已在内部修复,目标是包含在 SSDT 的下一个 (16.4) 版本中。 SSDT 版本最初通过 SSDT download page with notifications on the SSDT Team Blog 发布,然后在 2-3 周内推出 Visual Studio 扩展和更新(因为这是在单独的 VS 范围内进行的)。
- 注意:对于 VS2013 版本,请转到下载站点的 "Previous Releases" 页面。 SSDT 继续为 VS2013 更新,但下载页面已针对用户进行优化以获取最新版本 Visual Studio.
披露:我在 SSDT 团队工作