架构比较 - 填充源模型期间捕获的意外异常:对象引用未设置为实例对象

Posted

技术标签:

【中文标题】架构比较 - 填充源模型期间捕获的意外异常:对象引用未设置为实例对象【英文标题】:Schema compare - Unexpected exception caught during population of source model: Object reference not set to instance object 【发布时间】:2018-11-01 14:39:43 【问题描述】:

我一直在 Visual Studio 2017 的数据库项目中运行架构比较,执行此操作时,我在错误列表选项卡中收到以下消息:

填充源模型期间捕获的意外异常:对象 引用未设置为实例对象。

我发现this blog,这似乎是同一个问题,但建议的解决方案(使用“选择目标架构”窗口删除条目)尽管尝试了几次,但仍然没有奏效。

比较已经(并且确实)在 Visual Studio 2013 中使用相同的项目和数据库正常工作,所以我有一个解决方法,但很高兴知道导致问题的原因(并将 VS2013 抛在后面!)

【问题讨论】:

【参考方案1】:

我找到了解决方案;对于数据库项目,属性中有一个“目标平台”设置(见下文)。我将其设置为 SQL Server 2017,现在比较有效。

所需的默认平台似乎取决于数据库的兼容性(请参阅https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level);虽然我最初遇到此问题时需要 2017,但重复出现(针对兼容级别为 120 的数据库)需要选择 SQL Server 2014。

奇怪的是,我现在看到只需来回切换目标平台就可以解决问题,例如我有一个带有 SQL 2014 中不存在的 SQL 命令的数据库项目,我与 2017 年的目标进行了比较,但由于上述错误而失败,以 2014 年的目标运行并且出现错误(如您所料,因为它确实不了解较新的 SQL 函数),切换回 2017 目标,现在比较工作正常!

编辑:不同的工作,不同的数据库版本(2019)。几个月来一直运行良好,然后出现了这个错误。这次上面没有工作,所以以防万一有人发现相同,经过验证的关闭和重新打开VS对其进行了排序!

【讨论】:

确保在保存Target platform 更改后关闭重新打开您的Schema Compare

以上是关于架构比较 - 填充源模型期间捕获的意外异常:对象引用未设置为实例对象的主要内容,如果未能解决你的问题,请参考以下文章

在异常期间捕获原始 HTTP POST 数据

Java

意外类型 - 序列化异常

Windows 窗体崩溃:全局异常处理程序中捕获的意外 NullReferenceException

致命错误:未捕获的异常“Phalcon\Mvc\Model\Exception”与消息“语法错误,意外令牌>,

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“意外的启动状态”