我意识到这是一个讨论得很多的话题,但我看到的所有建议似乎都涉及直接访问SQL Server,在我们的实例中并不理想。
我们的场景是具有(例如)100个表的远程SQL Server数据库。我们正在开发一个轻量级桌面应用程序,它将使用SQL Server Compact数据库,并定期与远程服务器同步(例如)20个表的子集。
我希望控制复制的发生方式,因为速度对我们来说是一个主要问题,因为远程服务器距离数千英里远。
此外,我不需要同步每个表中的所有记录 - 只需要与每个用户相关的记录。
我非常喜欢SQL Merge工具,但它要求客户端连接到远程SQL Server。目前这是不可能的,我们正在考虑通过我们的应用程序或其他方法访问的Web服务与远程服务器连接。
欢迎任何建议。
更新
为了澄清一下,互联网连接是断断续续的,这是我们需要同步这两个数据库的主要原因。
答案 0 :(得分:1)
您在客户端使用紧凑型数据库这一事实会给您带来一些非常重要的限制,因为这个场景中的可用选项。
考虑到您需要的限制和性能要求,您可以考虑实施基于服务的http端点,以使所需的表保持同步。如果你的架构允许它,那么异步这样做会显着提高性能,但是根据你的架构,它甚至可能都不可行。
要考虑的其他事情是使用Web套接字而不是上面提到的Web服务的标准http连接。通过这种方式,您可以使客户端实时同步,因为Web套接字是真正的全双工实时连接。这方面的主要问题是您要么必须确保所有客户端都符合Web插槽,要么提供回退来模拟与不符合标准的客户端的仿真框架的websocket连接。
不确定这是否有帮助。
答案 1 :(得分:1)
您可以选择同步框架(需要更多编码并具有其他一些限制)或合并复制(均可通过http / https工作) - 请参阅此博客文章以进行比较:http://blogs.msdn.com/b/sqlservercompact/archive/2009/11/09/merge-replication-vs-sync-services-for-compact.aspx
答案 2 :(得分:0)
你能否使用MS Sync框架?
非常适合您的场景AFAIK。
快速Google改进了本教程......