当我尝试使用 Master Data Service 接口或 SP mdm.udpDeletedMembersPurge 清除我的实体时,我收到此错误:
MDSERR200221|无法从模型版本中清除成员。它包含至少一个作为同步关系目标的实体。
是的,我已经实现了一些实体同步,当我手动运行它们时,它并没有解决问题。
任何想法?
当我尝试使用 Master Data Service 接口或 SP mdm.udpDeletedMembersPurge 清除我的实体时,我收到此错误:
MDSERR200221|无法从模型版本中清除成员。它包含至少一个作为同步关系目标的实体。
是的,我已经实现了一些实体同步,当我手动运行它们时,它并没有解决问题。
任何想法?
在 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
与其他答案类似,我使用以下稍作改动的版本添加了一个条件。如果您尝试对整个模型执行该过程,而不定义实体,其中模型包含同步目标,这仍然会正确抛出错误。
-- 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