目前我有一个 SSIS 作业,用于将数据从一台 sql 20008 机器移动到另一台机器。该作业从大约 6 个表中移动了大约 200 万条记录。这大约需要 5-10 分钟,具体取决于服务器负载,这很好。因为数据被移动到临时表中,所以除了服务器的压力之外没有任何影响。
但是当我现在想将该数据与其各自的实时表合并时,我的问题就变成了。这可能需要大约 15 分钟,在此期间表被清空然后重新填充。我想知道的是在表之间移动数据的最有效方法是什么。
目前情况如下:
删除表
重建带有索引和约束的表
插入选择以移动数据
然后运行所需的任何计算
运行以下命令以在移动数据后重建所有索引:
sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')"
我觉得应该有更好的方法,以便用户的停机时间最短。我的一个想法是创建第二组表,然后在它们准备好后重命名它们,但我不确定这是否是最好的方法。
我也刚刚阅读了合并命令,这可能会更好,因为我不必删除表并重新填充,这意味着所有数据都将保持可用,但如果不查看几乎所有列就很难知道记录是否发生变化.
我将不胜感激任何帮助。