【问题标题】:MDS 2016: Entity purge - hard deleteMDS 2016:实体清除 - 硬删除
【发布时间】:2017-10-25 10:51:13
【问题描述】:

当我尝试使用 Master Data Service 接口或 SP mdm.udpDeletedMembersPurge 清除我的实体时,我收到以下错误:

MDSERR200221|无法从模型版本中清除成员。它至少包含一个作为同步关系目标的实体。

是的,我已经实现了一些实体同步,当我手动运行它们时,它并没有解决问题。

有什么想法吗?

【问题讨论】:

    标签: purge master-data-services


    【解决方案1】:

    在 mdm.udpDeletedMembersPurge 存储过程中有一个检查,以确保您没有尝试清除同步实体。它没有指定您尝试清除的实体,因此您当前模型中的任何同步实体都会阻止清除。

    我修改了存储过程,通过在谓词中添加另一个子句来查看当前实体: 此代码从第 172 行开始。

    -- Verify the entity is not a sync target.
    DECLARE @TargetEntityName NVARCHAR(50) = NULL;
    SELECT TOP 1 
        @TargetEntityName = e.Name
    FROM mdm.tblSyncRelationship sr
    INNER JOIN mdm.tblEntity e
    ON sr.TargetEntity_ID = e.ID
    WHERE   e.Model_ID = @Model_ID
        AND sr.TargetVersion_ID = @Version_ID
        AND e.id = @Entity_ID --Add this to the predicate
    

    【讨论】:

      【解决方案2】:

      与另一个答案类似,我使用以下稍作改动的版本添加了一个条件。如果您尝试对整个模型执行该过程,而不定义实体,其中模型包含同步目标,这仍然会正确抛出错误。

      -- Verify the entity is not a sync target.
      DECLARE @TargetEntityName NVARCHAR(50) = NULL;
      SELECT TOP 1 
          @TargetEntityName = e.Name
      FROM mdm.tblSyncRelationship sr
      INNER JOIN mdm.tblEntity e
      ON sr.TargetEntity_ID = e.ID
      WHERE   e.Model_ID = @Model_ID
          AND sr.TargetVersion_ID = @Version_ID
          AND (@Entity_ID IS NULL OR e.ID = @Entity_ID);  --Added line
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        • 2021-07-22
        • 2021-12-20
        相关资源
        最近更新 更多