将数据从本地数据库复制到远程数据库

时间:2009-03-01 17:30:43

标签: sql-server database

我正在编写一个系统,需要将数据从客户端本地托管的SQL数据库复制到托管服务器数据库。虽然优化是为了减少需要发送的实际数据量,但本地数据库中的大多数数据都被复制到实时数据中。

将这些数据从一个数据库发送到另一个数据库的最佳方法是什么?目前我可以看到一些可能的选择,但它们中没有一个能够成为主要候选人。

  • 复制虽然这并不理想,但我们不能指望在托管环境中使用的SQL版本中支持它。
  • 链接服务器,直接复制数据 - 一种缓慢且有些不安全的方法
  • 传输数据的Web服务
  • 将我们需要的数据导出为XML并传输到要批量导入的服务器。

复制的数据进入表的副本,没有标识字段,因此可以插入/更新数据,在这方面没有任何违规。这种数据传输不必在数据库级别完成,可以从.net或其他设施完成。

更多信息

更新的频率将根据记录的更新频率而有所不同。但基本思想是,如果记录被更改,则用户可以将其发布到实时数据库。或者,我们将记录更改并以可配置的频率批量发送。

我们正在谈论的记录数目目前为核心表(产品目录)每个表大约4000行,但这完全可变,取决于我们部署它的客户端,因为每个都有自己的产品目录,从100到1000的产品。为了澄清,每个客户端都在一个单独的本地/托管数据库组合中,它们不会合并到一个系统中。

除了个别发布项目外,我们还需要完全重新同步数据,以便按需完成。

系统的另一个方面是从本地服务器复制的一些数据存储在辅助数据库中,因此我们有效地将两个数据库中的数据合并到一个实时数据库中。

5 个答案:

答案 0 :(得分:1)

嗯,我有偏见。我必须承认。我想催眠你做SQL比较来做这个。在所有开放式的可怕性中,我一直面临着这种问题。我得到了SQL Compare的副本,从未回头。 SQL Compare实际上是一个同步数据库的软件的愚蠢名称。一旦你有一个工作项目和所有正确的旋钮和按钮,它也将从命令行执行。当然,你只能为相当小的数据库做这件事,但它确实是一个我不希望在公开场合看到的工具。

我唯一关心的是您从许多客户那里收集产品目录的地方。如果它们都在单独的表中,那么一切都很好,而如果它们都在同一个表中,那么这会使事情变得更复杂。

答案 1 :(得分:0)

你在谈论多少数据?有多少“客户”dbs?它需要经常发生多少次?这些问题的答案将对你应该采取的道路产生重大影响。

答案 2 :(得分:0)

这个问题有几乎无限的解决方案。为了缩小范围,你必须告诉我们你的要求和优先事项。

批量操作可能涵盖多种场景,您应将其添加到列表顶部。

答案 3 :(得分:0)

我建议使用数据转换服务(DTS)。您可以创建一个DTS包用于追加,另一个用于重新创建数据。

可以从代码中调用DTS包操作,因此您可能需要创建一个包装器来控制可以从应用程序调用的包。

答案 4 :(得分:0)

最后,我选择了一组触发器来捕获对更改日志表的数据修改。然后有一个应用程序轮询该表并生成XML文件以提交给在远程位置运行的Web服务。