日期:2014-05-16  浏览次数:20461 次

vc++ ado 多线程 访问远程数据库的疑惑。
我在做一个进销存服装管理系统,2个店子都是用adsl+猫上网。店子之间要可以互相访问对方的数据库,查看对方的数据,方便调货。同时老板要能在外地可以浏览数据(不需要修改数据)。
我租用了一台远程数据库服务器,但是直接访问速度很慢。
为了解决这个问题,我的想法是,在本地建立数据库,在本地增删改,然后把sql语句保存到本地文件(或者本地access数据库里,不知道可行么?)里,然后我在程序里另外开一个线程,然后这个线程往远程服务器数据库执行这些保存在本地文件的sql语句。
这样就实现同步了,而且用户使用起来应该不会觉得很卡。

相当于后台提供一个服务,一直对远程数据库操作
前台和后台一起访问的数据只有那个sql文件
-------------------------------------------------------------------------------------
我的疑问是访问远程数据库的时候要不要用到什么com的列集,散集,什么线程池的概念;还有如何保证我的线程对远程数据库操作失败的情况下,保证数据的准确性。需要用到事务么?BeginTrans,CommitTrans,RollbackTrans,这些要用到么?如何用呢?
------解决方案--------------------
这个是数据库同步问题,可以通过数据库复制技术来解决的。

因为,你现在用程序解决,这个比较麻烦,你得考虑这种问题,什么线程,事务等等的。
------解决方案--------------------
不知道你用的是什么版本,这个是sql server 2008R2版本的。

SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
http://blog.csdn.net/sqlserverdiscovery/article/details/17059073
------解决方案--------------------
引用:
看了一篇文章,是这样写的。
在SQL Server 2000里设置和使用数据库复制之前,应先检查相关的几台SQL Server服务器下面几点是否满足:
1、MSSQLserver和Sqlserveragent服务是否是以域用户身份启动并运行的(.\administrator用户也是可以的)
   如果登录用的是本地系统帐户local,将不具备网络功能,会产生以下错误:
   进程未能连接到Distributor '@Server name' 
 如果您的服务器已经用了SQL Server全文检索服务, 请不要修改MSSQLserver和Sqlserveragent服务的local启动。会造成全文检索服务不能用。请换另外一台机器来做SQL Server 2000里复制中的分发服务器。

需要在同一个域里面才能同步啊?

        

 修改服务启动的登录用户,需要重新启动MSSQLserver和Sqlserveragent服务才能生效。    

        


这个不太准确,只要你有公网的ip地址,就可以同步的,不需要在域环境中,可以是本地到远程,也可以从远程同步到本地,都可以。