【问题标题】:SSDT schema comparison error: Value cannot be null. Parameter name: identifierGroupSSDT 架构比较错误:值不能为空。参数名称:标识符组
【发布时间】:2022-02-05 07:16:43
【问题描述】:

使用 VS 2017 中的 SSDT,我无法对两个数据库进行架构比较。重现步骤:

  1. 工具 >> SQL Server >> 新架构比较
  2. 选择一个源(SQL 2017 数据库)
  3. 选择一个目标(SQL 2017 数据库)
  4. 比较
  5. 获取错误:值不能为空。 参数名称:identifierGroup

我也在 VS 2015 中尝试过,它仍然安装,但在那里也失败了。

【问题讨论】:

  • 它适用于我...您需要提供更多详细信息,尝试确定导致错误的对象。
  • 有趣的是,我正在对网络上的两个数据库进行此尝试,但在这些数据库上失败了(即使我验证了我可以连接并且我是该实例的系统管理员)。我对两个本地数据库进行了尝试,但它确实有效。 ??
  • 有趣的是,它与连接到网络上实例的比较的一侧一起工作,无论它是目标还是源还是网络上两个数据库中的哪一个都无关紧要。只要它是网络上的一个数据库和一个本地数据库,它就可以正常工作。如果它是网络上同一实例上的两个数据库,则它会因该错误而失败。

标签: sql sql-server sql-server-data-tools


【解决方案1】:

此错误在身份缓存被禁用后开始

ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF

重新启用后,错误消失:

ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = ON

别忘了重启sql服务。

【讨论】:

  • 还是没有运气。对 OP 问题的评论表明存在网络问题,因此我尝试了两个本地实例,并启用了身份缓存……不走运。试过VS2017(我在VS2019上)。我正在运行两个 SQL 实例(2017 和 2019)。为了澄清,我已将两个数据库放在同一版本(SQL2019)上,这是它们的原生版本。在线搜索显示您的建议是一种可能的解决方案,但它对我不起作用:(
【解决方案2】:

我遇到了同样的问题,还没有找到解决方案,我想这与孤儿用户有一些关系。

我做了一个对我来说很好的解决方法。

  1. 新建一个空数据库
  2. 将原始数据库与新数据库进行比较。
  3. 使用生成的脚本更新新数据库。
  4. 将此新数据库设为新源并与目标数据库进行比较。
  5. 更新目标数据库。

也许这会有所帮助!

【讨论】:

    【解决方案3】:

    到目前为止,我使用 SSDT/Visual Studio 2019 对 SQL Server 2019 数据库找到了一个对我有用的不同答案。

    https://hendrikbulens.com/2018/10/03/how-to-fix-sql-server-data-tools-error-unexpected-exception-caught-during-population-of-source-model-in-visual-studio-2017/

    希望这对某人有所帮助。理想情况下,微软需要修补这个问题,这在这一点上看起来像是一个长期存在的错误。我寻找这样的补丁,但没有找到。如果有人找到,请在此处链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      相关资源
      最近更新 更多