2009-03-01 123 views
0

我正在编写系统,需要将数据从客户端本地托管SQL数据库复制到托管服务器数据库。本地数据库中的大部分数据都被复制到活动数据库中,尽管进行了优化以减少需要发送的实际数据量。将数据从本地数据库复制到远程数据库

将数据从一个数据库发送到另一个数据库的最佳方式是什么?目前我可以看到一些可能的选择,但他们都没有脱颖而出成为主要候选人。

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

复制的数据进入表的副本,没有标识字段,因此可以插入/更新数据,而不会在此方面发生任何违规。这种数据传输不一定要在数据库级完成,它可以通过.net或其他工具完成。

更多信息

更新的频率将在记录的更新频率完全改变。但基本思想是,如果记录被更改,则用户可以将其发布到实时数据库。或者,我们将记录这些更改并将它们以可配置的频率批量发送。

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

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

系统的另一方面是从本地服务器复制的一些数据存储在辅助数据库中,所以我们有效地将来自两个数据库的数据合并到一个活动数据库中。

+0

刚开始时,您可以通过在启动时发出“SET IDENTITY INSERT ON”命令来保留标识字段并将其插入到其他数据库中。请记住在完成后关闭它。 – tomfanning 2011-06-30 21:53:37

回答

0

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

0

你在说多少数据?有多少'客户'dbs在那里?以及它需要多久发生一次?这些问题的答案将在你应该采取的道路上发挥很大的作用。

0

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

批量操作可能会覆盖很多场景,您应该将其添加到列表顶部。

0

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

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

1

嗯,我很偏向。我必须承认。我想催眠你进行SQL比较的炮击工作。我一直在面对这种无所不在的可怕的问题。我收到了SQL Compare的副本,从此不再回头。 SQL Compare实际上是同步数据库的软件的一个愚蠢的名字它也将从命令行执行它,只要你有一个工作项目和所有正确的旋钮和按钮。当然,你只能在相当小的数据库上做到这一点,但它确实是一个我不希望公开的工具。

我唯一关心的是你的要求,就是你从很多客户收集产品目录的地方。如果它们都在单独的表格中,那么一切都很好,但是如果它们都在同一张表格中,那么这会使事情更加复杂。

相关问题