检测到冲突-无法回退-违反了主键约束-无法在对象中插入重复的键

时间:2019-01-16 14:26:28

标签: azure-sql-database symmetricds

我已经使用Azure SQL为具有双向复制的主数据库和从数据库配置了SymmetricDS 3.9.15。 我在重新加载通道上连续遇到“无法回退”错误。我已经附上了相同的错误日志。

这是我的sym_conflict配置

modelService.ribbon.listOfServers: https://somedomain.com:443

SymmetricDS Windows服务日志==>

        insert into sym_conflict (conflict_id, target_channel_id, source_node_group_id, target_node_group_id, detect_type, detect_expression, resolve_type,ping_back, resolve_changes_only, resolve_row_only, create_time, last_update_time)
        values ('Conflict-primary-secondary-staging_prod-us', 'matter', 'primary-staging_prod-us', 'secondary-staging_prod-us', 'USE_CHANGED_DATA', null, 'FALLBACK', 'REMAINING_ROWS', 0, 1, GetDate(), GetDate());
        insert into sym_conflict (conflict_id, target_channel_id, source_node_group_id, target_node_group_id, detect_type, detect_expression, resolve_type,ping_back, resolve_changes_only, resolve_row_only, create_time, last_update_time)
        values ('Conflict-secondary-primary-staging_prod-us', 'matter', 'secondary-staging_prod-us', 'primary-staging_prod-us', 'USE_CHANGED_DATA', null, 'FALLBACK', 'REMAINING_ROWS', 0, 1, GetDate(), GetDate());

        insert into sym_conflict (conflict_id, target_channel_id, source_node_group_id, target_node_group_id, detect_type, detect_expression, resolve_type,ping_back, resolve_changes_only, resolve_row_only, create_time, last_update_time)
        values ('Conflict-primary-secondary-staging_prod-us-reload', 'reload', 'primary-staging_prod-us', 'secondary-staging_prod-us', 'USE_CHANGED_DATA', null, 'FALLBACK', 'REMAINING_ROWS', 0, 1, GetDate(), GetDate());
        insert into sym_conflict (conflict_id, target_channel_id, source_node_group_id, target_node_group_id, detect_type, detect_expression, resolve_type,ping_back, resolve_changes_only, resolve_row_only, create_time, last_update_time)
        values ('Conflict-secondary-primary-staging_prod-us-reload', 'reload', 'secondary-staging_prod-us', 'primary-staging_prod-us', 'USE_CHANGED_DATA', null, 'FALLBACK', 'REMAINING_ROWS', 0, 1, GetDate(), GetDate());

致谢

Rajat Agrawal

2 个答案:

答案 0 :(得分:0)

我会删除您的重新加载频道上的冲突。您不需要在重新加载通道上进行冲突检测。默认情况下,重新加载将插入数据,如果失败将回退以进行更新,以允许其余批次继续进行。

答案 1 :(得分:0)

我在TaskTimeEntriesCaching表上具有以下唯一索引,这导致回退失败。

    /****** Object:  Index [UC_TaskTimeEntriesCaching_TaskID]    Script Date: 17-01-2019 12:21:57 ******/
    ALTER TABLE [dbo].[TaskTimeEntriesCaching] ADD  CONSTRAINT [UC_TaskTimeEntriesCaching_TaskID] UNIQUE NONCLUSTERED 
    (
        [TaskID] ASC,
        [DeletedFlag] ASC,
        [sid] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
    GO

我还使SymmetricDS Windows服务处于停止状态几天了,并且有一个与默认通道平行的“事务”通道。 因此,我必须删除此唯一索引才能完成重新加载通道。

致谢

Rajat Agrawal