我目前正在开发一个使用 SQL Server Compact 3.5 数据库的平板电脑应用程序。需要在平板电脑之间同步数据。经过一些研究(即this和this),我和我的团队决定拥有一个由 SQL Server 2008 R2 托管的中央数据库。
在实现了这个例子之后,这种方法有几个缺点:
我想同步整个数据库,而不仅仅是表的一个子集。这将需要向缺少主键的表添加主键,更不用说将每个表添加到同步范围。
根据同步方向,服务器数据库(由 SQL Server 2008 R2 托管)或客户端数据库(SQL Server Compact 3.5)具有优先权,这意味着一个数据库的数据可能会覆盖另一个数据库的数据。
我相信更改跟踪可能很有用,并且希望在适用的情况下利用这种方法为以下场景找到解决方案:
服务器和三张表目前在db中同一个数据库同步。
ID | NAME
---------
1 | JIM
2 | BOB
3 | JANE
这三个平板电脑离线以执行他们的操作。
平板电脑 1 增加了以下内容:
4 | JOE
平板电脑 2 添加了以下内容(假设在平板电脑 1 之后):
4 | BILL
平板电脑 3 增加了以下内容(假设平板电脑 2 之后):
4 | DAVE
然后,平板电脑以任何顺序重新在线连接以进行同步。说完同步,服务端db和客户端dbs应该有以下数据:
ID | NAME
---------
1 | JIM
2 | BOB
3 | JANE
4 | JOE
5 | BILL
6 | DAVE
从 DBA 的角度来看,存在合并复制,但我在 db 服务器上没有任何系统管理员权限(或在 pc 本身上的管理权限,以便给自己在 sql server 中的系统管理员权限)。因此,如果可能,我想避免这条路线,并坚持使用同步框架(或更好)编写解决方案。
在实施上述示例后,我是否走上了正确的轨道,最终找到了适合我的场景的解决方案,还是我需要做其他事情?