1

我们有一个应用程序,它将收集数据并将其存储在使用 Microsoft SQL Server Compact 的本地 WinXP PC 中。我们希望将这些数据聚合到一个完整的 SQL Server 以进行报告和归档。尽管可以接受一些延迟(最多一分钟或两分钟),但数据传输需要相当连续(即不成批处理)。

数据是从收集器到服务器的单向推送。收集器永远不需要知道其他收集器在做什么,主服务器永远不会更新收集器上的数据。目前的计划是针对 5 个收集器,但它的可扩展性基本上是无限制的。

我们必须假设我们将“大部分连接”,但我们不能保证从收集器到服务器的连接。如果服务器或网络出现故障,我们仍会收集数据,并且当服务器再次可访问时,数据将被推送回来。

理想情况下,我们希望在我们完成基础设施工作后,非编程工程师可以设置一个解决方案。因此,我们可以编写一些代码和向导,但不能假定最终用户对编写代码一无所知,尽管他们具有合理的计算机技术素养。

现在我们有两种技术候选:

  1. SQL 复制
  2. 微软同步服务

我们对第一个没有什么经验,但是我们知道在 SQL Server 中设置订阅等是痛苦的,调试它们也不好玩,所以我们正在尝试寻找替代方案。

我们对#2 几乎一无所知,只是有人建议将其作为将设备数据传输到服务器的替代方案。

有没有人在这种情况下有经验,或者使用这两种技术中的一种/两种,或者我们认为他们可以分享的任何东西?收集器上的 SQL Compact 是一个固定要求。服务器上的 SQL Server 不是必需的,但由于客户已经拥有它而需要它。

4

4 回答 4

1

我在完全发布之前使用过 Microsoft Sync Services。我喜欢它,它似乎非常适合您的应用程序。

我建议,如果你想让自己的生活更轻松,是使用 GUID(SQL Server 唯一标识符)作为要同步到主服务器的所有表的主键。这将防止冲突和大量额外的编码。

一个警告:我听说同步服务在第一个版本发布后发生了重大变化,所以我的信息可能已经过时了。

于 2008-11-29T01:01:25.330 回答
0

尝试同步并告诉我们它是如何进行的 :) 我看到了一个 MSFT 事件,这个人说:“我添加了这 3 行代码,所有内容都同步了......呜呜呜”。

听起来像我要走的路。

于 2008-11-19T20:51:22.073 回答
0

复制的问题在于,当您的架构发生更改时,您将需要在每个客户端上进行手动工作以使复制重新启动并运行。我没有使用同步服务的经验,但我会问同样的问题:架构更改时会发生什么?如果您必须接触每个客户,那可能是个问题。

于 2008-11-29T00:54:47.947 回答
0

我最终选择了选项 3:两者都不是。相反,我们只是定期(用户可调整,但默认为 5 秒)使用SqlBulkCopy 类来复制记录。这很有效,因为它允许我们传入 IDataReader,因此我们使用 TableDirect 在本地打开表,从远程表中查找最高的 RowID,然后将读取器传递给 WriteToServer 类。

于 2008-12-31T15:55:10.620 回答