1

我在主数据服务 (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 会阻止第二个业务规则。

4

1 回答 1

1

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

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

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

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

于 2018-08-04T07:27:51.173 回答