数据库部署 - 部署计划生成期间发生错误。部署无法继续

Database Deployment - An error occurred during deployment plan generation. Deployment cannot continue

我想知道是否有人可以通过告诉我我在这里缺少什么来帮助我恢复理智。先上背景

我们在 TC 中有 5 个数据库项目,每个项目都有一个构建步骤,然后是一个部署步骤。这 5 个项目中有 4 个可以完美地构建和部署。

第 5 个构建正常,但在部署到其 SQL 服务器期间引发以下错误;


“*** 生成部署计划时出错。部署无法继续。”

元素或注释 class PersistedResolvableAnnotation 不包含 属性 class 长度。

[08:32:52][Exec] C:\TeamCity\BuildAgent3\work\c3c1bdeecddf68ca.Build\dbdeploy_single.proj(9, 5): 错误 MSB3073: 命令“"C:\Program Files (x86)\Microsoft SQL Server0\DAC\Bin\sqlpackage.exe" /Action:发布 /sf:"../DB-ExampleData/ExampleData/bin/Release/ExampleData.dacpac" /pr:"../DB-ExampleData/ExampleData/UAT.publish.xml" /TargetServerName:IP.IP.IP.111" 退出,代码为 1.


在调查过程中,我将 UATpublish.xml 与有效的 UAT 进行了比较,它们看起来完全相同。我试过 Windows 身份验证和 SQL 身份验证,这也没有区别。当 运行 来自 Visual Studio 时,发布文件也能正常工作。

我已经检查了工作项目和这个项目之间的部署设置,我能看到的唯一区别是预期的数据库名称。

有没有人知道这可能是由什么引起的,我该如何解决。如果需要,我有日志和屏幕截图。

感谢您花时间阅读本文。

尼克

看起来您的构建服务器使用的 sqlpackage(即 DacFX)版本与 Visual Studio 使用的版本不同,并且您的五个项目中只有一个包含处理的任何功能 "differently" 两个版本。

这个msdn thread有点细节。

简而言之,我将在构建服务器上更新 DacFX,并确保构建作业正在调用

中的 sqlpackage.exe

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

在我的案例中,.NET 版本的 SQLCLR 在项目属性中有所不同。感谢@Gavin 指出正确的方向。 并更正 "Compatibility Level"