0

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

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

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

任何想法?

4

2 回答 2

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
于 2018-05-23T11:33:34.410 回答
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
于 2020-01-10T17:48:15.473 回答