我们将商店的销售交易上传到总部服务器。目前,我们使用 DTS(SQL Server 数据转换服务),但我们计划将其替换为适用于 ADO.NET 的 Microsoft Sync 服务,因为这似乎是 Microsoft 对此类设置的首选解决方案,我们希望遵循标准(有望长期存在)。以下是我们设置的详细信息以及我们的计划。我正在寻找一些建议,尤其是关于 Sync Services 是否适合我们的解决方案。
情况
每家商店都有一个第 3 方 EPOS 系统,它将销售额存储在我们可以访问的 Microsoft Access 2000 数据库中。我们的总部数据库是SQL Server 2005,但将升级到2008。总部不在与所有商店的VPN上,但我们可以打开我们的防火墙到商店的IP地址,这样他们就可以直接向SQL发送数据服务器。这些商店总是通过 ADSL 连接到互联网,尽管它们确实失去了连接,我们不想丢失销售数据。我们只是从商店上传交易——不需要下载定义。
当前解决方案
我们编写了一个在商店 PC 上运行的 Windows 服务。该服务从服务器下载一个 DTS 包(其中包含上传的所有详细信息)并在商店中运行它——这会将销售上传到我们的服务器。我们选择了 DTS,因为安装 MSDE 时它是免费的。我们不能使用 SSIS,因为这需要每个商店都有 SQL Server 许可证。我们选择 DTS 的另一个原因是上传的详细信息(即要包含哪些表和字段)存储在我们的总部服务器上,因此如果我们需要更改内容,我们可以集中完成,而无需安装任何新内容商店。这不是一个炫耀,但在我们的新解决方案中拥有这种能力会很好。
潜在的解决方案 - 适用于 ADO.NET 的 Microsoft Sync 服务
我们目前正在使用 Microsoft Sync 服务为 ADO.NET 构建概念验证。这个想法是将 SQL CE (SQL Server Compact 3.5) 放在每个商店(客户端)中,并将其同步到总部 SQL Server 2005 数据库(服务器)。我们将通过 (1) 将数据与 Access 2000 数据库同步或 (2) 让 EPOS 系统开发人员将销售额直接写入 SQL CE 数据库——可能是 (2) 将数据输入 SQL CE 数据库。但我们主要关心的是从商店获取数据到总部服务器。这种方法似乎是微软对偶尔连接系统的首选解决方案,这也是我们认真看待同步服务的原因。我希望使用它意味着上传销售所需的大部分工作将内置到同步服务中,我们不必重新发明轮子。
潜在的解决方案 - 上传到自定义 Web 服务
也可以将销售交易上传到我们总部服务器上的自定义 Web 服务,然后上传到我们的 SQL Server 数据库。这意味着我们必须建立自己的机制来确定哪些行是新的,以及在系统断开连接时进行缓存。此外,我们可能会错过同步服务中内置的其他功能。
如果您有任何有用的建议,请告诉我,尤其是:“同步服务是正确的解决方案吗!”。我们试图解决的问题似乎非常普遍(从商店上传销售)——我想用一个通用的解决方案来解决它。