【发布时间】:2017-09-22 15:58:23
【问题描述】:
目前我有一个 SSIS 作业,用于将数据从一台 sql 20008 机器移动到另一台机器。该作业从大约 6 个表中移动了大约 200 万条记录。这大约需要 5-10 分钟,具体取决于服务器负载,这很好。因为数据被移动到临时表中,所以除了服务器的压力之外没有任何影响。
但是当我现在想将这些数据与它们各自的实时表合并时,我的问题就变成了。这可能需要大约 15 分钟,在此期间表被清空然后重新填充。我想知道的是在表之间移动数据的最有效方法是什么。
目前情况如下:
删除表格
使用索引和约束重建表
插入选择以移动数据
然后运行任何需要的计算
移动数据后运行以下命令重建所有索引:
sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')"
我觉得应该有更好的方法,以便用户的停机时间最短。我的一个想法是创建第二组表,然后在它们准备好后重命名它们,但我不确定这是否是最好的方法。
我也刚刚阅读了合并命令,这可能会更好,因为我不必删除表并重新填充,这意味着所有数据都将保持可用,但如果不查看几乎就很难知道记录是否发生变化所有列。
我将不胜感激。
【问题讨论】:
-
这 2M 条记录中有多少根本没有改变?换句话说,有多少记录是新的,有多少是更新的?您可以将
LastUpdated datetime或VerCol rowversion添加到源表吗? -
很难说。进来的大部分数据绝对是新的。但数据来自票务系统,并且随时可能发生变化。
标签: sql-server-2008 ssis data-synchronization large-data