当我尝试使用主数据服务接口或SP mdm.udpDeletedMembersPurge清除我的实体时,出现此错误:
MDSERR200221 |无法从模型版本中清除成员。它包含至少一个实体,它是同步关系的目标。
是的,我已经实现了一些实体同步,当我手动运行它时,它无法解决问题。
有什么想法吗?
答案 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