Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008上的TableDiff实用程序有哪些替代方案?_Sql_Sql Server_Database_Sql Server 2008_Comparison - Fatal编程技术网

SQL Server 2008上的TableDiff实用程序有哪些替代方案?

SQL Server 2008上的TableDiff实用程序有哪些替代方案?,sql,sql-server,database,sql-server-2008,comparison,Sql,Sql Server,Database,Sql Server 2008,Comparison,目前,我们正在SSIS数据加载期间使用TableDiff实用程序从暂存表(具有要更新的最新数据,可以是insert/update/delete)更新生产中的活动表 但是TableDiff需要花费相当多的时间来识别差异,并为作业创建用于更新的sql脚本(从几个小时——识别大约1000行更新到100000行更新,需要几天时间) SQL Server 2008上是否有更好的TableDiff实用程序替代方案,或者可能有更好的流程/想法 更新: 寻找产品/实用程序选项以及更好的算法使其更快我建议比较Re

目前,我们正在SSIS数据加载期间使用TableDiff实用程序从暂存表(具有要更新的最新数据,可以是insert/update/delete)更新生产中的活动表

但是TableDiff需要花费相当多的时间来识别差异,并为作业创建用于更新的sql脚本(从几个小时——识别大约1000行更新到100000行更新,需要几天时间)

SQL Server 2008上是否有更好的TableDiff实用程序替代方案,或者可能有更好的流程/想法

更新:
寻找产品/实用程序选项以及更好的算法使其更快

我建议比较RedGate的SQL数据,但价格有点贵。(如果你想查看它是否适合你,可以免费试用)

红门应该是最好的

我有时使用工具


它们相当繁重,但是要完成它们的工作

为什么在存储过程中调用MERGE语句在这里不是一个选项?我在DTS时代就使用了这种方法。

关键问题。我几天前就遇到过这种情况。我在staging表中额外使用了
Timestamp
(或任何标志)列。每当将数据加载到目标表时,检查时间戳(或标志);数据完全加载后,更新列(时间戳或标志)。在这种情况下,不需要跟踪
已删除的
数据,所以它就成功了。您好。谷歌给我带来了这个,它对合并语句有很好的解释。我建议您首先使用ManagementStudio连接到您的开发数据库,打开一个查询窗口,并尝试使用阶段表和目标表的MERGE命令。如果您看到好处,您将把它集成到SSIS中。上面的链接说,您甚至不必为此创建存储过程,您可以将MERGE语句直接放入executesql任务中。