MDS 2016:实体清除 - 硬删除

时间:2017-10-25 10:51:14

标签: purge mds

当我尝试使用主数据服务接口或SP mdm.udpDeletedMembersPurge清除我的实体时,出现此错误:

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在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

答案 1 :(得分:0)

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

-- 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