日期:2014-05-18  浏览次数:21009 次

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

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

------解决方案--------------------
我的想法是:
1. 捕捉本地数据库的所有Insert、Update、Delete操作,然后记录这些操作sql到Db的某张表中,每天固定时间将这张表中该天进行的sql语句生成为一个带时间戳的txt文档
2. 本地数据库所在计算机每天将该txt文档通过ftp上传至Web服务器。
3. Web服务器每天去Ftp共享目录读取该txt文件,并执行该txt文件内的sql语句。
------解决方案--------------------
web端提供给你一个接口,你们商定怎样的数据格式,你提交给web端,由web端去更新数据库
------解决方案--------------------
建议自动定时更新方式:写个本地的同步程序,自动定期同步数据,直接更新WEB服务器的数据库。
------解决方案--------------------
你用的什么数据库啊
------解决方案--------------------
如果需要实时更新,就用WebService,本地执行完SQL操作,就将该SQL语句通过WebService调用传递给Web端,由Web端即时执行。

如果是定时更新,因为每天执行的SQL语句很多,文本量很大,因此需要本地上传文件到Web,Web定时执行。

如果需要人工手动进行,可以参照定时更新的方法,只是Web端需要每10秒左右轮询一次Ftp指定目录下的Sql文本文档是否存在,如存在则执行,并且执行完后需要删除或移动到其他文件夹,而本地则是使用手动方式导出Sql操作的文本文档,上传至Web的指定目录。
------解决方案--------------------
1.这种方法最简单,适合时间准确性要求不高的环境使用,采用定时更新。

2.关于WebService,如果是用.Net的话可以查阅Wcf相关的技术知识,就是Web端开发一个接口供你本地应用程序调用。

3.kansousasa 说的触发器是指本地数据库的每张表都写触发器,当表遇到Insert、Update、Delete操作时,就可以记录这些操作,同步时不需要整个数据库都同步而只需要同步这些操作即可。如果以后数据库很大(几百M),每次都同步全部数据不划算。


------解决方案--------------------
以前遇到过做过类似的;
本地winservice定时执行(当时没考虑手工),网站端webservice
变更记录采用6楼方式,用一个表来记录,这个表大概结构为:id,发生变更的表名,变更表主键名,发生变更的行的主键值,变更类型。
winservice从该表取一条记录,从变更表取那行变更的数据(变更类型为删除则不需取),把数据整成一个<列名,列值>的集合,序列化压缩之类的。。搞到webservice在才开合成sql进行更新,webservice返回值来标识更新是否成功,成功就把本地的变更记录删掉。
另,如果是图片之类的字段比较大可能需要把图分成若干片段例如1k
------解决方案--------------------
如果本地服务器和WEB服务器可以互通的话, 可使用SSIS,再建立作业定时更新!
------解决方案--------------------
如果要能手工的话,第一种方法可控性强些,跨平台性好些,代码复杂点.
第2种,部署的时候方便.
各有优缺点,要根据运行环境来选择.
但2种方法,核心的地方基本一致,服务器端检索变更记录.
------解决方案--------------------
不知道你要更的是什么样的数据,如果客户端只是触发一个事件让服务端进行更新的,那就没有这个必要,最简单的办法是在服务端写个程序让服务器定时运行。而如果所更新的数据必须由客户端来提供的话,那就另当别论,不管怎么说,对于这种情况,在客户端必须要有一个程序在运行。如果是B/S,那就得有一台机器用浏览器打开某个特定的页面,如果是C/S,可以写一个数据采集的程序,然后让客户端操作系统定时运行,当然,如果有能力写个Windows服务程序就更好了。
因为是Web应用程序,所以Internet的通过性很好,FTP什么的就不要去想了,只要按自己定的数据格式以HTTP请求的方式向服务器提供数据就可以了,如果用WCF就比较省力了,特别是你打算用.net做一个专用客户端程序的时候。
------解决方案--------------------
探讨

引用:
如果是B/S,那就得有一台机器用浏览器打开某个特定的页面,

因为是Web应用程序,所以Internet的通过性很好,FTP什么的就不要去想了,只要按自己定的数据格式以HTTP请求的方式向服务器提供数据就可以了,如果用WCF就比较省力了,

上面说的这两种方法不明白啊?
什么是特定的页面?是否就是管理用户登录后的后台管理页面呢?那这个页面如何把本地数据库更……