我认为 Roman 的答案是您在当前情况下正在寻找的内容:DELETE、UPDATE、INSERT(或 MERGE。)
现在还有其他可能的路线可以使事情变得更快,但过程却截然不同:
1. 考虑将所有订单保存在一个文件中,您偶尔会针对目标运行该文件
假设两个数据库完全相同,对于修改 2008 数据库的每个 SQL 顺序,将该顺序保存在 .sql 文件中,稍后您将针对 2005 数据库执行该文件。您必须考虑在写入文件时锁定文件,并且可能存在某种冗余。但是,这意味着您在处理 2005 数据库时根本不需要访问 2008 数据库。换句话说,对 2008 数据库速度没有副作用。
陷阱:您可能会错过一个声明,并且目的地不会是完全等价的......
2. 持续复制
我对 MSSQL 的了解不足以告诉你一个做自动复制的好工具(见这里:http ://technet.microsoft.com/en-us/library/ms151198.aspx ),但我敢打赌你可以找个好工具。MySQL ( http://dev.mysql.com/doc/refman/5.0/en/replication.html ) 和 PostgreSQL ( http://wiki.postgresql.org/wiki/Streaming_Replication ) 有这样的工具,而且都是免费的。
这将是我会选择的解决方案。根据您使用的工具,它可以得到很好的优化,这意味着对实时系统的影响将是最小的,并且 2005 副本将在几秒钟内更新(取决于它是否是长距离远程连接,工作量、每台服务器的设置、互联网连接等)
陷阱显然是它在数据库上添加了一个持续的进程,但是如果你找到一个像 PostgreSQL 的流复制一样工作的 MSSQL 工具,它会使用日志的副本,这意味着它非常快(没有大量使用磁盘 I/O。)
3.集群数据库(如Cassandra)
这将涉及更改数据库,我完全确定您还没有准备好这样做(尤其是因为这些系统中的大多数不提供 SQL),但我认为在您的情况下谈论这将是一件好事。
像 Cassandra ( http://cassandra.apache.org/ ) 这样的系统会自动在多台计算机上复制其数据。它实际上可以设置为每台计算机复制所有数据 100% 或 X% 的数据,并在出现故障(计算机发生故障)时具有冗余。这减少了对单独计算机上特定副本的需求,因为只需在系统中添加几个节点即可提高性能。(一台计算机不到 1,000 美元,这是值得的!坦率地说,您可以以 5 万美元或更少的价格创建一个 Peta Byte 系统,并最终得到比任何 SQL 数据库都快得多的东西......)
主要问题是这些集群的使用与 SQL 完全不同。但这对于拥有大型数据库的大型企业来说可能是一个解决方案,这些大型数据库需要非常快并且他们不想投资小型计算机(想想 Cobol 和价值 25 万美元的计算机,它们可以在几毫秒内管理 1 亿行...... .)
使用 Cassandra,您可以在不会影响前端系统的后端计算机上运行极其繁重的批处理!