玩转C科技.NET

从学会做人开始认识这个世界!http://tinyurl.com/volnet http://bit.ly/KMzi2

导航

<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

公告

Microsoft MVP!
2008.10-2010.10
Subscribe to this feed
Contact volnet online!

MSN群MyMSDN技术讨论群
群号:www.msdn@hotmail.com
Windows Live Alerts
LiveMessenger:
<My Library>

昵称:volnet(可以叫我大V)
园龄:7年3个月
粉丝:26
关注:10

搜索

 

常用链接

最新随笔

我的标签

随笔分类(182)

随笔档案(161)

文章分类(15)

文章档案(15)

相册

家园建设

积分与排名

  • 积分 - 238739
  • 排名 - 333

最新评论

阅读排行榜

评论排行榜

推荐排行榜

[FIM]两张表结构相同完美同步,如何做?ObjectAlreadyExistsException

假设有这么一个场景:
 
    表1和表2,假设结构相同(这不是重点),两张表都以userId作为Key。目标是从表1的数据同步到表2。
 
    实现:1、表1中有,表2中没有的数据,从表1同步到表2。
 
              2、表1中有,表2中也有的数据,以表1的各个字段为准。
 
              3、表1中没有,表2中有的数据,在表2中继续保留。
 
做法1:
 
    两个MA,分别以userId作为Anchor,DistinguishedName,并且字段分别映射。
 
    为MV编写Provisioning代码,并设置选项为启用MVExtension。
 
    同步顺序:表1 FullImport -> 表2 FullImport -> 表2 FullSync -> 表1 FullSync -> 表2 Export
 
    存在问题:
 
           当表2中原本存在数据,且该数据已经在表1中存在的时候,该条记录将引发ObjectAlreadyExistsException异常,该条记录没有处理,但正确的行为是不是应该是Join?遇到这个情况(异常)正确的解法是什么?
 
做法2:(改进做法1)
 
    考虑到有ObjectAlreadyExistsException异常,因此打算在Provisioning代码中将此异常抛弃,算作正常行为(因为此时对象确实存在),这样FIM应该按照自行逻辑进行Join操作?但是事实上,并非我所想(应该是理解有误),MV数据里面既有表1的数据,也有表2的数据,互不相干。

解决方案:

    当表1中的数据在表2种已经存在的时候(第一次同步)会抛出ObjectAlreadyExistException,应先关闭MV扩展(Tools->Options->清空第一个复选框),执行表2的FullImport->FullSync,然后再打开MV扩展,执行正常同步(表1的FullSync)。

    在实际操作过程中,其实通常并不需要先关闭MV扩展,只需要将表2先做一次FullSync,这样表1再做FullSync的时候,就可以避免这个问题了。

posted on 2012-01-03 05:03 volnet(可以叫我大V) 阅读(33) 评论(0) 编辑 收藏

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 2310787 aeDEOX71lnE=
使用Live Messenger联系我
关闭