基于多个域的属性的 MDS 业务规则
MDS business rule on more then one domain based attribute
我在主数据服务 (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 会阻止第二个业务规则。
这也发生在我们身上,似乎只有在采取一组特定的操作时才会出现此错误:
- 我们首先在 SQL Server 2017
上恢复了 MDS 2012 数据库
- 我们使用 MDS 管理工具升级了数据库。请注意,多实体业务规则现在工作正常 - 它们 return 保存时没有错误,可以发布并成功评估
- 然后我们意识到我们缺少一些代码更改,因此我们决定在我们的旧 MDS 2012
中使用 MDSModelDeploy.exe 创建一个完整的模型包
- 我们使用
MDSModelDeploy deployupdate
命令部署了那个包。之后现有的多实体规则无法发布,您也无法基于一个实体内的不同实体创建新规则。不幸的是,我们没有找到解决方法,因为有更简单的解决方法。
此时我们后退了一步,再次恢复并升级了旧数据库,结果证明规则有效,所以一定是包破坏了那些规则。我不知道你的情况是什么,因为当我们在 SQL 2017 年创建一个新模型时,所有基于多实体的规则都运行良好,所以我很想知道应该采取什么步骤来重现错误你的情况。
我能想到的解决第 4 点中的情况的唯一可能方法是从损坏的模型创建一个 MDSModelDeploy 更新包,另一个从新的、健康的模型创建一个,然后比较 XML 的方式多实体业务规则是结构化的。不过我们没有尝试这个,因为我们找到了前面描述的解决方法。
我在主数据服务 (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 会阻止第二个业务规则。
这也发生在我们身上,似乎只有在采取一组特定的操作时才会出现此错误:
- 我们首先在 SQL Server 2017 上恢复了 MDS 2012 数据库
- 我们使用 MDS 管理工具升级了数据库。请注意,多实体业务规则现在工作正常 - 它们 return 保存时没有错误,可以发布并成功评估
- 然后我们意识到我们缺少一些代码更改,因此我们决定在我们的旧 MDS 2012 中使用 MDSModelDeploy.exe 创建一个完整的模型包
- 我们使用
MDSModelDeploy deployupdate
命令部署了那个包。之后现有的多实体规则无法发布,您也无法基于一个实体内的不同实体创建新规则。不幸的是,我们没有找到解决方法,因为有更简单的解决方法。
此时我们后退了一步,再次恢复并升级了旧数据库,结果证明规则有效,所以一定是包破坏了那些规则。我不知道你的情况是什么,因为当我们在 SQL 2017 年创建一个新模型时,所有基于多实体的规则都运行良好,所以我很想知道应该采取什么步骤来重现错误你的情况。
我能想到的解决第 4 点中的情况的唯一可能方法是从损坏的模型创建一个 MDSModelDeploy 更新包,另一个从新的、健康的模型创建一个,然后比较 XML 的方式多实体业务规则是结构化的。不过我们没有尝试这个,因为我们找到了前面描述的解决方法。