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

d21*_*219 4 sql-server database-project schema-compare visual-studio-2017

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

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

我发现了这个博客,这似乎是相同的问题,但是尽管尝试了几次,但建议的解决方案(使用“选择目标模式”窗口删除条目)仍然没有用。

比较可以(并且确实)可以在Visual Studio 2013中与相同的项目和数据库一起正常工作,因此我可以解决这个问题,但是很高兴知道是什么引起了该问题(并将VS2013抛在了后面!)

d21*_*219 5

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

在此处输入图片说明

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

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

  • 保存“目标平台”更改后,请务必**关闭**并**重新打开**您的“架构比较”。 (3认同)