我有几个使用我的Windows应用程序的客户端数据库。
我想将此数据发送到在线网站。
客户端数据库和服务器数据库结构不同,因为我们需要将客户端ID列添加到服务器数据库中的某些表。
我用这种方式来同步数据库;使用另一个应用程序并使用带事务的C#批量复制来同步数据库。
我的服务器数据库sql server太忙,无法运行并行任务。
我正在研究这个解决方案: 我在更新,删除,插入后使用触发器来保存一个表中的更改并创建sql查询以发送Web服务以同步数据。
但我必须先发送所有数据!巨大的数据集(大于16毫克)
我认为不能使用复制,因为结构和主键是不同的。
答案 0 :(得分:0)
您是否考虑过使用SSIS进行预定数据同步?您可以非常轻松地进行数据转换和批量插入。
答案 1 :(得分:0)
据我所知,您希望允许多个客户端应用程序将其数据同步到服务器,使服务器拥有来自所有站点的所有数据,但每个记录也是如此有一个客户端标识符,因此您可以将可追溯性保持回源。
为什么在获得其他信息之前必须将所有数据发送到服务器?你应该能够同时构建所有这些东西。此外,您不必一次上传所有数据。将它们分为每天一个(假设您拥有少量的客户端数据库),这样可以让您依次关注每个数据库并确保流程准确完成。
将所有数据合并到一个表后,您是否会将数据复制回客户端?您的大小信息被误传,您是说每个数据库大于16GB?那么5个站点的累积大小是80GB,可以复制回各个站点吗?
否则,您使用单独的应用程序专门处理数据上传时所概述的方法将是最合适的。
更新master数据库后,是否要升级单个模式?您可能需要ALTER TABLE并为每条记录添加一个bool列,并将它们标记为“已发送”或“未发送”以跟踪“迟到”更新/插入的任何记录。我有一种感觉,你将要进行滚动部署/升级,而你正在试图弄清楚如何保持所有“同步”而不会丢失任何东西。
答案 2 :(得分:0)
您可以使用SQL Server Transactional Replication:HOW TO: Replicate Between Computers Running SQL Server in Non-Trusted Domains or Across the Internet