【问题标题】:MDS business rule on more then one domain based attribute一个以上基于域的属性的 MDS 业务规则
【发布时间】:2017-09-18 07:19:36
【问题描述】:

我在主数据服务 (MDS) 上遇到了这个问题。

我有一个实体,它有两个基于其他两个实体的域。 我创建了第一个基于域的业务规则,它运行良好。

但是当我尝试使用基于第二个域的第二个业务规则时,出现错误:

200095 : Cannot specify more than one entity in MetadataGet 

  400003 : The attribute reference is not valid. The attribute was not found. 

  400003 : The attribute reference is not valid. The attribute was not found.

显然该属性是有效的。事实上,如果我删除了第一个业务规则,那么第二个业务规则就会正确发布。

我认为如果您尝试应用到第二个基于域的属性,MDS 会阻止第二个业务规则。

【问题讨论】:

    标签: business-rules mds


    【解决方案1】:

    这也发生在我们身上,而且似乎只有在采取了一组特定的操作时才会出现此错误:

    1. 我们首先在 SQL Server 2017 上恢复了 MDS 2012 数据库
    2. 我们使用 MDS 管理工具升级了数据库。请注意,多实体业务规则现在可以正常工作 - 它们在保存时不会返回错误,可以发布并成功评估
    3. 然后我们意识到我们缺少一些代码更改,因此我们决定使用旧 MDS 2012 中的 MDSModelDeploy.exe 创建一个完整的模型包
    4. 我们使用MDSModelDeploy deployupdate 命令部署了该软件包。在现有的多实体规则无法发布之后,您也无法基于一个实体内的不同实体创建新规则。不幸的是,我们没有找到解决方法,因为有更简单的解决方法。

    此时我们退后一步,再次恢复和升级旧数据库,结果证明规则有效,所以它必须是破坏这些规则的包。我不知道你的情况是什么,因为当我们在 SQL 2017 中创建一个新模型时,所有基于多实体的规则都运行良好,所以我很想知道在你的情况下应该采取哪些步骤来重现错误。

    我能想到的解决第 4 点情况的唯一可能方法是,从损坏的模型创建一个 MDSModelDeploy 更新包,并从一个新的、健康的模型创建另一个更新包,然后比较多- 实体业务规则是结构化的。不过我们没有尝试这个,因为我们找到了前面描述的解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2012-06-18
      • 2021-05-03
      相关资源
      最近更新 更多