导致ID号重复的原因是,有两台SQL server机,当主用的这台有问题后就马上手动的指到另一台备用机去...
主用这台恢复后再指回来..
由于在指到备用机时没有及时将主用机的数据同步到备用机..
所以当恢复指向后就导致了主用机与备用机有两条相同ID号但数据内容都有效的情况..
用以日期作为数据差别分界线导出导入数据(从备用机导出,再导入主用机)时ID就重了..期间有两个让人琢磨的问题.1。如何解决当前ID号重复的问题?处理思路:写sql脚本将ID号重复的记录导出,再删去。
再重新用insert方式将数据放回。2。怎样避免类似的ID标识重复问题?思路1:启用备用机时及时同步主用机的数据。思路2:主用机与备用机分别管理不同限定范围的ID号,
如主用机1-5000000,备用机5000001-9999999小弟只给出了这一点想法。
不知哪位同志可以告知具体做法或有更好的办法处理。。

解决方案 »

  1.   

    1.
    select id,count(*) as idCount from tablename group by id having count(*)>12.
    采用自增量的id
      

  2.   

    gjz_1209,说得是但主用机一旦出问题就要立刻启用备用机..注意它是一台备用机而不只是一台单纯的备份机..
      

  3.   

    思路2:主用机与备用机分别管理不同限定范围的ID号,
    如主用机1-5000000,备用机5000001-9999999
    -----------------------------------如果备机和主机数据并不完全同步,仍然可以使用备机处理业务。
    我想问的是,某些原有ID数据在备机被修改了,怎么同步回去?手工处理?----
    如果不能保证同步,我认为必然很多都要手工处理。如果这个数据库只是新增ID,新增数据,那没啥问题。
      

  4.   

    思路1:启用备用机时及时同步主用机的数据。
    ---------
    这个,把主机表的id最大值传过去.楼上的子增id怎么实现?  这个只能控制本机本表子增,到了别人哪里就从头开始了.
    所以还是要同步id的数据.
      

  5.   

    不错,使用自增的ID号也是算是可行,因为,主用机自增,备用机也是会自增的.
    这没有法确宝他们不会自增到同一个号.所以用分别管理不同范围的ID号还是比较不错的办法..