数据库修改,数据库修改,数据库修改,求指点 - -

  • t
    t526
    A程序每隔90秒到180秒会自动在mdb数据库里面写入一条数据。
    B程序每隔7.5秒会查询一下这个数据库,如果发现有新增数据,就会复制写入到另一个SQLite数据库,然后在每隔30秒后上传到云存储。
    C程序就是我的VBS程序,每隔1.5秒查询A的数据库,发现新增数据立刻修改。



    但是我感觉就算我把查询速度提高到0.1秒,还是可能会被B提取到真实数据,只要它提取到1条,就会触动B在云端的警报,处罚通知单就会下来。
    不知道有没有高手指点下,有好的思路没,谢谢!
  • 1
    10moons
    首先你要告知数据规模
  • 小驴子
    A和B不能修改?
  • t
    t526
    小,最多不超过20W条,目前也才一万多条,每条数据也就不到100个字段,修改的也就20~30个。
  • s
    sunrainx
    这是什么鬼需求?
    如果有数据库的权限,可以写个触发器,在A程序写入时复制一份到其他表,并生成随机数,改写新增数据。
  • j
    jadeyang
    触发器~~~但看你介绍你是要做坏事?
  • d
    dalinlyz
    不知道哪些地方是可以改,哪些是不能改的。在b和a的数据库之间弄个代理,称之为d吧。d模仿a数据库的连接信息,把请求转发给a数据库,把响应返回给b。中间可以做任何转存、过滤的操作了
  • H
    Hisoka-J
    mdb是mongodb么?
    你试试用:change stream行么(从3.6开始支持)
  • Z
    Zerolone
    程序所在的服务器, 是否有控制权限
    有 -》 将B程序做个代理, 发送的数据, 发送到你的程序里面,处理完,再发送回B程序之前发送的地方。

    没有 -》理论上肯定会被B获取到。
  • t
    t526
    A是厂家程序,修改程序要发公函审批的。 B是第三方监管程序,不知道啥玩意儿,设置界面都是通过HTML的,好像只可以设置上传间隔时间,但是我不知道用户名和密码。
    我修改B的什么呢?云端没有数据上传也会触发警报呀。

    B是比对A数据库里面的时间字段,发现大于B数据库的时间字段就会采集。
    C是检查ID字段,发现大于缓存变量就立刻读取计算再修改写入。
  • 吾王美如画
    你现在的逻辑,不管你怎么改,都是有几率碰到刚好被b程序拿走数据。
    想要稳妥,还得在A程序上下手
  • t
    t526
    回复8#Hisoka-J


    不是,就是ACCESS2007或者2003的数据库!
  • o
    opensesame
    我觉得是直接改A,似乎不需要A写入的真实数据
  • a
    acmder002
    只要能动A、B,就是各种手段。然鹅,审题好像只能动C。
  • z
    znm
    看起来b同步数据不一定是通过查询得到的 iOS fly ~
  • H
    Hisoka-J
    B是比对A数据库里面的时间字段,发现大于B数据库的时间字段就会采集。

    这个时间字段是A程序写入的,还是db自己生成的当前时间
  • t
    t526
    mdb数据库好像不能创建触发器吧,不是太懂
  • t
    t526
    A创建的,A的数据库我可以查看修改,B的数据库我翻了下,好像可以全部查看,没试过修改,因为已经上传云端了,怕他们过来检查
  • H
    Hisoka-J
    回复18#t526


    你看一下那个时间字段的属性是啥,有没有default值
  • t
    txkingzjg
    想干坏事,哈哈,mark下,

    AB程序不能动,只能动MDB,mdb数据库研究下有没有触发器吧。
  • k
    keetian
    A采集,b监管,c就是干坏事。
    Ab在你手上吗?因为不存在时间同步,所以你这种方式时间再短也可能会刚好c查完就是a写b查
  • k
    keetian
    如果不能直接在数据库加触发器,试下短时间阻塞网络访问会不会导致ab报警,一般程序都会容许几秒的延迟,如果不会报警,那就c先阻塞b检查数据并修改,再阻塞a防止写入,接入b让他查数据,c循环不让ab同时访问数据库并在中间修改
  • t
    t526
    Access2003的mdb数据库 应该设置不了触发器,B是绝不能动A的数据库的。我可以动A的数据库,但是我只能修改A的数据,不能改A的位置,也不能控制A的写入
  • t
    tons
    只有7、9楼是靠谱的
  • t
    t526
    不知道哟,只能写入固定格式的日期和时间,应该是采集的系统当前时间
  • t
    t526
    AB都在我电脑里
  • z
    zhenyue
    你这个模式总会漏掉数据的。
    数据耦合模式,这样搞当然不行

    除非修改程序,比如A插入的时候,在记录上搞个Flag记录位, C 去读这个记录通知将记录位置1, B读记录的时候只能读记录位为1的记录。
  • l
    lifeorange
    现在监管平台好像要合一了,越来越难
  • t
    t526
    B的配置文件
    SELECT TOP 10
    Cstr(ID) AS SJZ_KZ4,
    TaskID AS SCRWBH,
    TaskInf0 AS GCMC,
    TaskInf6 AS GCBW,
    ClassType AS QDDJ,
    Format(iTime,'yyyy-MM-dd HH:mm:ss') AS SCSJ,
    Format(iTime,'yyyy-MM-dd HH:mm:ss') AS JBSJ,
    Format(iTime,'yyyy-MM-dd HH:mm:ss') AS CLSJ,
    iif((TruckID IS NOT NULL AND TruckID<>''),TruckID,'0') AS CPBH,
    FullMix AS JBSC,

    Cubes AS SHEJFL,
    S1 AS SHEJZ_GL1,
    S2 AS SHEJZ_GL2,
    S3 AS SHEJZ_GL3,
    S4 AS SHEJZ_GL4,
    S5 AS SHEJZ_GL5,
    S12+S13+S14 AS SHEJZ_KF,
    S16+S17 AS SHEJZ_FMH,
    S22 AS SHEJZ_S,
    S23 AS SHEJZ_WJJ1,

    Cubes AS SJFL,
    A1 AS SJZ_GL1,
    A2 AS SJZ_GL2,
    A3 AS SJZ_GL3,
    A4 AS SJZ_GL4,
    A5 AS SJZ_GL5,
    A12+A13+A14 AS SJZ_KF,
    A16+A17 AS SJZ_FMH,
    A22 AS SJZ_S,
    A23 AS SJZ_WJJ1
    FROM
    Act
    WHERE CDate(iTime)>CDate('@time')
    AND A22>0
    AND (A1>0 OR A2>0 OR A3>0 OR A4>0 OR A5>0)
    AND (A6>0 OR A7>0 OR A8>0 OR A9>0 OR A10>0 OR A11>0 OR A15>0)
    ORDER BY CDate(iTime);

    SELECT A.* FROM(
    SELECT ID,'AAA'AS glname,Cstr(S6) AS shejz,Cstr(A6) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'AAA'AS glname,Cstr(S7) AS shejz,Cstr(A7) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'AAA'AS glname,Cstr(S8) AS shejz,Cstr(A8) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'AAA'AS glname,Cstr(S9) AS shejz,Cstr(A9) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'AAA'AS glname,Cstr(S10) AS shejz,Cstr(A10) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'AAA'AS glname,Cstr(S11) AS shejz,Cstr(A11) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'AAA'AS glname,Cstr(S15) AS shejz,Cstr(A15) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'BBB'AS glname,Cstr(S23) AS shejz,Cstr(A23) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'BBB'AS glname,Cstr(S24) AS shejz,Cstr(A24) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'BBB'AS glname,Cstr(S25) AS shejz,Cstr(A25) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'BBB'AS glname,Cstr(S26) AS shejz,Cstr(A26) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'BBB'AS glname,Cstr(S27) AS shejz,Cstr(A27) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    UNION ALL
    SELECT ID,'BBB'AS glname,Cstr(S28) AS shejz,Cstr(A28) AS sjz FROM Act WHERE cstr(ID) IN('{0}')
    ) A WHERE A.sjz>0
  • j
    josephduung
    access的话,或者从文件IO入手,发现有来自A的数据库打开请求,就在A完成操作后,立即执行C
  • 苏来
    A = 本地环保数据采集?
    B = 省环保数据采集中心?
    C = 您的脚本。修改环保数据,以便改动到达标范围内?
  • c
    cookite_li
    我这外行, 也觉得LZ准备干坏事.
  • a
    alvise
    access 貌似也没有行级锁吧。。。按现在逻辑肯定有漏网的。 楼主要做什么坏事?
  • t
    t526
    软件公司故意留了漏洞,只要断网程序就停止采集停止上传,等联网后再采集断网时的数据上传。
    这监管也就呵呵了……
  • f
    forwhat
    mdb是access数据库吧