免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2402 | 回复: 3

sybase 12.5 复制 数据不一致的问题。 [复制链接]

论坛徽章:
0
发表于 2013-03-26 20:56 |显示全部楼层
现象:发现目标端数据比源端少,经过排查,发现在源端执行delete .. where ...语句时,再目标端会多删数据,将where条件之外的数据也删了。
源端sql如下
select @2m_day  = convert(char(,dateadd(mm,-2,getdate()),112)  --两个月前
delete LOG_2M where convert(char(,sj,112) <@2m_day
经过测试,发现经过复制,在目标端,部分不在时间范围之内的数据也被删了,导致两边数据不一致。
难道是复制传输过程中出错?
求大神解释。

论坛徽章:
0
发表于 2013-03-26 20:58 |显示全部楼层
delete CM_CRD_SD_LOG_JF_2M where convert(char( 8 ),sj,112) <@2m_day

论坛徽章:
0
发表于 2013-03-27 11:46 |显示全部楼层
我又做了个试验,A表复制到B表,表结构一样,无索引,无触发器等,就两张裸表,inser 时 复制没问题。按时间delete时,问题来了,B表删的数据比A表多。。。
表结构如下
create table ZH_2M_A (
        kid                             varchar(20)                      not null  ,
        kh                              varchar(20)                      not null  ,
        str                             varchar(10)                      not null  ,
        orgid                           varchar(10)                      not null  ,
        pcid                            varchar(20)                      not null  ,
        pclx                            varchar(10)                      not null  ,
        pczjf                           float(16)                        not null  ,
        pcjf                            float(16)                        not null  ,
        jflx                            varchar(4)                       not null  ,
        pcrq                            char(                          not null  ,
        rq                              char(                          not null  ,
        sj                              datetime                         not null  ,
        lx                              varchar(10)                      not null  ,
        dh                              varchar(20)                      not null  ,
        djlx                            varchar(10)                      not null  ,
        str1                            varchar(30)                      not null  ,
        str2                            varchar(30)                      not null  ,
        str3                            varchar(30)                      not null  ,
        num1                            numeric(12,2)                    not null  ,
        num2                            numeric(12,2)                    not null  ,
        num3                            numeric(12,2)                    not null   
)
lock allpages
on 'default'
go

在A表执行的sql 为 delete from ZH_2M_A where convert( char ( 8 ),sj,112 ) ='20130127'
在B表中,SJ为'20130128'  ,  '20130129' 也删了一些数据。(表中元数据,SJ 只有这三个时间)

论坛徽章:
0
发表于 2013-03-28 08:49 |显示全部楼层
有沒有觸發器?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP