2011-02-06 78 views
0

我有几个客户端数据库使用我的Windows应用程序。将多个SqlServers同步到一个SQL Server 2005的最佳方法是什么?

我想将这些数据发送到在线网站。

客户端数据库和服务器数据库结构不同,因为我们需要将客户端ID列添加到服务器数据库中的某些表中。

我用这种方式来同步数据库;使用另一个应用程序并使用C#批量复制和事务来同步数据库。

我的服务器数据库sql server太忙,并行任务无法运行。

我在这个解决方案上工作: 我更新,删除,插入后使用触发器来保存一个表中的更改并创建sql查询以发送Web服务来同步数据。

但我必须先发送所有数据!巨大的数据集(大于16毫克)

我认为不能使用复制,因为结构和主键不同。

+0

http://stackoverflow.com/questions/1656652/syncing-sql-server-2008-databases-over-http-using-wcf-sync-framework – 2011-02-06 07:15:20

回答

0

您是否考虑过使用SSIS来执行预定的数据同步?您可以很容易地进行数据转换和批量插入。

+0

这是否仅通过HTTP工作? – jcolebrand 2011-02-06 06:30:55

0

正如我所了解您要做的,您希望允许多个客户端应用程序将其数据与服务器同步,以便服务器拥有来自所有网站的所有数据,但每条记录也有一个客户端标识符,因此您可以保持追溯到源代码。

为什么在获得其他信息设置之前,您必须将所有数据发送到服务器?你应该能够同时构建所有这些东西。另外,您不必一次上传所有数据。每天将其展示为一个(假设您拥有少量的客户端数据库),这将使您有机会依次关注每个客户端并确保该过程已准确完成。

将所有数据合并到一个表后,您是否将数据复制回客户端?你的尺寸信息是错误的,你说每个数据库大于16GB?那么,5个网站的累计规模将达到80GB,并将其复制到个别网站?

否则,您使用单独的应用程序专门处理数据上传的概述方法将是最合适的。

在更新主数据库之后是否要升级单个模式?您可能需要ALTER TABLE并为每条记录添加一个bool列,并将它们标记为“已发送”或“未发送”以跟踪任何已更新/插入“延迟”的记录。我有一种感觉,你将要进行滚动部署/升级,并且你正试图弄清楚如何保持它“同步”,而不会丢失任何东西。

相关问题