SSDT发布 - 对象引用未设置

4

我正在尝试发布一个SSDT项目,但出现了错误 "Object reference not set to an instance of an object",没有其他消息。是否有一种方法可以进行故障排除。

enter image description here


如果更新到最新版本后仍然无法解决问题,请为此打开一个连接错误报告。这是一个空引用问题,启用日志记录后您很可能会得到堆栈跟踪(请参见https://the.agilesql.club/Blogs/Ed-Elliott/Enable-SSDT-And-DacFx-Logging)。 - Kevin Cunnane
嗨,Kevin,使用VSO发布任务时也失败了,后来我从生产环境中刷新了我的数据库,问题得到了解决。目标数据库中的某些内容导致了VSO和Visual Studio的异常。 - Shiju Samuel
如果您获取了调试日志并找到了堆栈跟踪,请发送至 kcunnane [at] microsoft [dot] com,我可以查看。通常情况下,一旦您有了搜索区域,检查空值通常很容易修复,因此值得尝试修复。 - Kevin Cunnane
5个回答

4

我也遇到了同样的错误,原因是构建配置不正确。

SSDT缺少当前解决方案的构建配置,在通过配置管理器将其添加到SSDT后,问题得以解决。


1
这个问题和解决方案已经发生了两次 - 在我的情况下,Visual Studio设置了来自另一个代码分支的不正确的解决方案配置值。 - onupdatecascade

2

当我右键单击一个数据库项目并选择“发布”时,出现了这个错误(尽管数据工具操作窗口中没有任何内容显示,不像 OP)。

我构建了该项目,然后Publish...又开始正常工作了 :)

使用 SQL Server Data Tools 15.1.61810.11040


1
我昨天遇到了这个问题,并通过试错找到了根本原因。
对我而言,这是由SSDT试图更新分区方案和函数引起的。它试图通过删除和重新创建分区方案和函数来实现此目的,但显然在使用它们时无法执行此操作。因此,它无法生成升级脚本并显示上述令人生畏且无用的错误信息。
如果您不需要更新分区(即如果有其他东西管理它),则可以在高级发布设置中禁用检查。

Advanced Publish Settings -> Ignore -> Ignore Partition Schemes

如上所述,运行比较时应忽略分区方案和函数的任何更改,但仍需最初部署它们。这可以解决脚本生成过程中出现的错误。

如果需要更新分区方案/函数,建议将其作为后置部署脚本执行,以便更好地控制执行的代码。


这个解决方案对我有帮助,虽然不是针对Azure DB,而是普通的SQL Server数据库。 - Nick

1
我注意到除了“目标不可用”外,从这里下载和安装最新的SSDT通常可以解决该问题。请确保你的项目目标是SQL Azure数据库,如这里所述。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接