C/S架构的数据库异步同步问题

开发语言:C#
数据库:sql server
想实现功能:
把服务器上的数据库down到本地,客户端使用时操作本地数据库,固定时间或服务器数据库连通的情况下,将本地数据同步到服务器的数据库中。
目的:在服务器关闭、或断网情况下,可以保证客户端使用的稳定性。

希望大神们指点迷津,提供一些可行性方案,十分感谢!

关键看你的业务需求。
比如说电子词典完全可以离线工作,在线更新词库。
但是银行卡pos刷卡就绝对不能离线工作。
没有什么一劳永逸的办法,你在本地和服务器端建立数据库以及同步都是少不了的。
在业务逻辑上,哪些数据在离线的情况下只读,哪些只写,哪些不能读写都需要你根据业务谨慎考量。
最好是把数据库访问单独分层,然后单独控制。

可以考虑脱机库模式。
脱机库模式对实时环境要求不高,本地库只是备份了远程库中部分可用库的数据【这个可根据业务规则】。在本地库记录更改数据,也就是说本地库在操作时可标识哪些数被更改过。在联网时用单独的进程与远程库数据进行交互。
或者在更新本地库时维护本地一个同结构库。比如,CA计算机需要远程库中表TA中的数据部分数据,在CA计算机中就建立两个表,TBA(脱机库,用于下载远程数据库),和TUA(结构相同空表)。CA计算机在操作TBA时同时生成一条数据到TUA中。这样不影响本地计算机的使用。在特定条件下,如联机或用户手工同步库时,将TUA(只存储新手入,更新的数据)更新地远程库中,这样本地的TBA则被动与远程同步了(已经同步)。如果下次脱机时如果不需要其他特殊的数据,则不需要对TBA再进行同步。

从你的描述中可以看出你对实时性要求不要,所以脱机库方式是满足你的要求的。
如果实时性较高的系统,则可以使用SQL Server中的同步,镜象、发布订阅等功能实现同步库。

最好是把数据库访 问单 独分层,然后单独控制。