架构比较 - 在填充源模型期间捕获意外异常:未将对象引用设置为实例对象
Schema compare - Unexpected exception caught during population of source model: Object reference not set to instance object
我 运行 在 Visual Studio 2017 年的数据库项目中进行了模式比较,当我这样做时,我在“错误列表”选项卡中收到以下消息:
Unexpected exception caught during population of source model: Object
reference not set to instance object.
我发现 this blog,这似乎是同一个问题,但建议的解决方案(使用 Select 目标模式 window 删除条目)尽管尝试了但没有奏效几次了。
在 Visual Studio 2013 年,比较已经(并且确实)在同一项目和数据库中正常工作,所以我有一个变通办法,但很高兴知道是什么导致了问题(并离开VS2013落后!)
我找到了解决办法;对于数据库项目,属性中有一个 'Target platform' 设置(见下文)。我将其设置为 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 命令的数据库项目,这些命令在 SQL 2014 年不存在,我 运行 与 2017 年的目标进行比较,但由于上述错误而失败,运行使用 2014 目标并出现错误(如您所料,因为它不理解较新的 SQL 函数),切换回 2017 目标,现在比较工作正常!
编辑: 不同的工作,不同的数据库版本 (2019)。几个月来一切正常,然后出现此错误。以上这次没有用,所以为了以防万一有人发现相同的情况,经过试验和测试的关闭和重新打开 VS 对它进行了排序!
我 运行 在 Visual Studio 2017 年的数据库项目中进行了模式比较,当我这样做时,我在“错误列表”选项卡中收到以下消息:
Unexpected exception caught during population of source model: Object reference not set to instance object.
我发现 this blog,这似乎是同一个问题,但建议的解决方案(使用 Select 目标模式 window 删除条目)尽管尝试了但没有奏效几次了。
在 Visual Studio 2013 年,比较已经(并且确实)在同一项目和数据库中正常工作,所以我有一个变通办法,但很高兴知道是什么导致了问题(并离开VS2013落后!)
我找到了解决办法;对于数据库项目,属性中有一个 'Target platform' 设置(见下文)。我将其设置为 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 命令的数据库项目,这些命令在 SQL 2014 年不存在,我 运行 与 2017 年的目标进行比较,但由于上述错误而失败,运行使用 2014 目标并出现错误(如您所料,因为它不理解较新的 SQL 函数),切换回 2017 目标,现在比较工作正常!
编辑: 不同的工作,不同的数据库版本 (2019)。几个月来一切正常,然后出现此错误。以上这次没有用,所以为了以防万一有人发现相同的情况,经过试验和测试的关闭和重新打开 VS 对它进行了排序!