c# - 将远程 SQL Server 数据库与本地 SQL Server Compact 数据库同步的最佳方法?

标签 c# sql sql-server web-services sql-server-ce

我意识到这是一个被广泛讨论的话题,但我看到的所有建议似乎都涉及直接访问 SQL Server,这在我们的实例中并不理想。

我们的场景是一个包含(比如)100 个表的远程 SQL Server 数据库。我们正在开发一个轻量级桌面应用程序,它将使用 SQL Server Compact 数据库并定期将(比如)20 个表的子集与远程服务器同步。

我想控制复制的发生方式,因为速度对我们来说是一个主要问题,因为远程服务器在 1000 英里之外。

此外,我不需要同步每个表中的所有记录 - 只需同步与每个用户相关的记录。

我很喜欢 SQL Merge设施,但是它要求客户端连接到远程 SQL Server。目前这是不可能的,我们正在考虑通过我们的应用程序访问的 Web 服务或其他一些方法连接到远程服务器。

欢迎提出任何建议。

更新

澄清一下,互联网连接会断断续续,这是我们需要同步两个数据库的主要原因。

最佳答案

在这种情况下,您正在为客户端使用紧凑型数据库这一事实对您的可用选项施加了一些相当大的限制。

考虑到您想要的限制和性能要求,您可以考虑实现基于服务的 http 端点以保持所需表的同步。如果您的架构允许,异步执行此操作会显着提高性能,但同样,根据您的架构,它甚至可能不可行。

还有一点需要考虑的是,使用网络套接字而不是标准的 http 连接来进行网络服务,就像上面提到的那样。这样你就可以保持客户端实时同步,因为网络套接字是真正的全双工实时连接。这样做的主要问题是,您要么必须确保所有客户端都兼容网络套接字,要么提供后备方案,以使用模拟框架为不符合标准的客户端模拟网络套接字连接。

不确定这是否有帮助。

关于c# - 将远程 SQL Server 数据库与本地 SQL Server Compact 数据库同步的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443519/

相关文章:

c# - Entity Framework 不加载相关对象

SQL Union 与 COUNT() 函数未返回预期结果

mysql select distinct 语句(严格版本?)

c# - 访问路径 'C:\Users\amministratore\Documents\pippo.xml' 被拒绝

c# - 如何显示任务栏通知?

sql - PostgreSQL-9.3 : extract data from not strict json

sql-server - SQL Server 中外键是否自动建立索引?

sql-server - 使用直接与开发服务器同步的 TFS 2010 的 SQL Server 版本控制

sql - 使用 SQL 获取和删除查询字符串

c# - 在 ASP.net c# web 应用程序中显示警告框