刚做了一个简单的WEB查询网站,遇到一个问题就是:以后要实现把本地数据库中的一些数据更新到WEB服务器上的数据库中, 这个更新有人工运行方式,也可能有自动定时更新方式。因为从来没遇到过这种要求,请大家给个如何程序实现的思路。
主要这么几点:
1.这个更新程序是直接写在WEB查询网站程序的后台功能中,还是另外设计一个在本地运行?
2.对WEB服务器要有什么权限?现在只开了一个网站目录的FTP.
3.本机只能通过INTERNET网访问网站服务器,这样能行么?

解决方案 »

  1.   

    以下几点建议:
    1.你需要解决本地数据如何自动上传到WEB 服务器(本地至少要有一个WINFORM之类的程序吧,可以考虑在WEB 服务器上再上个WEB SERVICE 来进行数据通信)
    2.本地数据如何同WEB服务器的数据对应,因为主键ID肯定会是一样的(你需要判断数据是新增还是更新)
      

  2.   


    2.本地数据如何同WEB服务器的数据对应,因为主键ID肯定不会是一样的刚才打错了...
      

  3.   

    我的想法是:
    1. 捕捉本地数据库的所有Insert、Update、Delete操作,然后记录这些操作sql到Db的某张表中,每天固定时间将这张表中该天进行的sql语句生成为一个带时间戳的txt文档
    2. 本地数据库所在计算机每天将该txt文档通过ftp上传至Web服务器。
    3. Web服务器每天去Ftp共享目录读取该txt文件,并执行该txt文件内的sql语句。
      

  4.   

    web端提供给你一个接口,你们商定怎样的数据格式,你提交给web端,由web端去更新数据库
      

  5.   

    建议自动定时更新方式:写个本地的同步程序,自动定期同步数据,直接更新WEB服务器的数据库。
      

  6.   

    我是直接写个触发器,当需要更新的表被update insert delete操作后,把这些数据的ID和操作类型给记录下来,更新就操作这些被更改的ID
      

  7.   

    如果需要实时更新,就用WebService,本地执行完SQL操作,就将该SQL语句通过WebService调用传递给Web端,由Web端即时执行。如果是定时更新,因为每天执行的SQL语句很多,文本量很大,因此需要本地上传文件到Web,Web定时执行。如果需要人工手动进行,可以参照定时更新的方法,只是Web端需要每10秒左右轮询一次Ftp指定目录下的Sql文本文档是否存在,如存在则执行,并且执行完后需要删除或移动到其他文件夹,而本地则是使用手动方式导出Sql操作的文本文档,上传至Web的指定目录。
      

  8.   

    啊,才一小会就有那么几位的好建议啊,我总结一下看是否理解对了:
    1.第一种方式如nikola、calltaotao提供的就是本地有个处理程序把本地数据库中的更新记录准备为一个文本文件之类的,FTP到服务器上,然后服务器上定时去检查服务器上的upload目录是否有新上传的数据文件,进行处理;
       我现在本地和WEB服务器上都是access2003数据库,就是一个mdb库文件了,这种方法可行。
    2.第二种如版主和baichangle的方法,好象是要写个什么webservice服务吧,一来没写过这种服务程序,二来还不太明白两位的具体实现方法,能不能再详细一些?
    3.kansousasa:触发器我会写,但我这问题中主要是两个库不在一起,估计无用,同时我的数据只会在本地更新,WEB服务器上只是查询,没有新增、修改或删除的操作,所以只是本地DB单向更新给WEB服务器中的DB;
    嗯,不知道我对上面的理解是否对了?
      

  9.   

    1.这种方法最简单,适合时间准确性要求不高的环境使用,采用定时更新。2.关于WebService,如果是用.Net的话可以查阅Wcf相关的技术知识,就是Web端开发一个接口供你本地应用程序调用。3.kansousasa 说的触发器是指本地数据库的每张表都写触发器,当表遇到Insert、Update、Delete操作时,就可以记录这些操作,同步时不需要整个数据库都同步而只需要同步这些操作即可。如果以后数据库很大(几百M),每次都同步全部数据不划算。
      

  10.   

    以前遇到过做过类似的;
    本地winservice定时执行(当时没考虑手工),网站端webservice
    变更记录采用6楼方式,用一个表来记录,这个表大概结构为:id,发生变更的表名,变更表主键名,发生变更的行的主键值,变更类型。
    winservice从该表取一条记录,从变更表取那行变更的数据(变更类型为删除则不需取),把数据整成一个<列名,列值>的集合,序列化压缩之类的。。搞到webservice在才开合成sql进行更新,webservice返回值来标识更新是否成功,成功就把本地的变更记录删掉。
    另,如果是图片之类的字段比较大可能需要把图分成若干片段例如1k
      

  11.   

    如果本地服务器和WEB服务器可以互通的话, 可使用SSIS,再建立作业定时更新!
      

  12.   

    不知道你要更的是什么样的数据,如果客户端只是触发一个事件让服务端进行更新的,那就没有这个必要,最简单的办法是在服务端写个程序让服务器定时运行。而如果所更新的数据必须由客户端来提供的话,那就另当别论,不管怎么说,对于这种情况,在客户端必须要有一个程序在运行。如果是B/S,那就得有一台机器用浏览器打开某个特定的页面,如果是C/S,可以写一个数据采集的程序,然后让客户端操作系统定时运行,当然,如果有能力写个Windows服务程序就更好了。
    因为是Web应用程序,所以Internet的通过性很好,FTP什么的就不要去想了,只要按自己定的数据格式以HTTP请求的方式向服务器提供数据就可以了,如果用WCF就比较省力了,特别是你打算用.net做一个专用客户端程序的时候。
      

  13.   

    上面说的这两种方法不明白啊?
    什么是特定的页面?是否就是管理用户登录后的后台管理页面呢?那这个页面如何把本地数据库更新到WEB服务器的数据库中呢?
    还有,用HTTP请求方式向服务器提供数据是如何实现的?能否提供一个代码例子参考一下呢?
      

  14.   


    比如在CSDN,你要登录是不是要转到登录页,输入了用户名和密码才能登录,那么这个登录页面就是我所说的特定页面,输入的用户名和密码就是要上传的数据,当点击了登录按钮以后,浏览器会把数据上传到服务器进行处理,然后更新数据库里相关表的信息。这就是一般HTTP处理数据上传的方式,只是包装形式不一样罢了。