如何将记录从MDS传输到另一个表,然后从MDS中删除某些记录,而不从传输的表中删除它们

时间:2018-02-28 20:07:42

标签: master-data-services

我正在使用 主数据服务 (SQLServer2016的企业版)从不同部门收集数据,因此每个组都有一个或多个具有更新访问权限的属性组。为了指示循环完成,将属性“循环状态”设置为值“是”。 由于许多业务规则和多个属性组,性能变得非常慢,所以我想的是: 1.然后将已完成周期的所有记录转移到表格中 2.从主数据服务中删除这些记录,但这不会从表中删除它们(Point_1)。 有什么线索怎么做?,我知道在MDS中有一个订阅视图,但不知道这是否可以满足我的需求?怎么样?

1 个答案:

答案 0 :(得分:0)

E.IK,

第一种方法:业务规则的条件评估

您可以查看为所有业务规则添加条件以仅评估业务规则

IF周期状态=“否”

这可能会降低您现在看到的性能影响(不确定)。 这可以通过(在“编辑业务规则”屏幕中)

来完成

条件>价值比较>等于>选择属性:=“循环状态”>属性值/属性:=“否”

这样您就不必移动数据了。

第二种方法:将数据移动到另一个(物理)表

  • 这种方法需要您在同一个MDS DB或其他数据库中创建一个单独的表(物理数据库表,非实体,以避免MDS开销)。
  • 然后创建一个SP,它将循环状态=“是”的行插入第二个表&在MDS实体中将它们标记为已删除。
  • 您可能希望创建一个SQL代理作业,可以按照您喜欢的频率(每日,每周等等)安排运行此SP。
  • 此方法面临的挑战是您的用户将无法再轻松访问此存档数据。

另一种替代方法......

将创建一个单独的MDS模型 - “存档”。在那里创建一个类似的实体(如镜子)&而不是将已关闭的记录移动到Db表,而是将它们添加到存档模型中的镜像实体。您可能希望仅为所有用户提供对此新实体的只读访问权限。