我在SSIS
(在visual studio 2013中定义)中有一个简单的数据流,它使用SQL从一个sql server实例的表A中提取数据,然后将其添加到另一个SQL Server实例的表B中。 p>
截断表B中数据的最佳做法模式是什么?像这样的截断语句:
TRUNCATE TABLE B
在表A的select语句之后 - 特别是当你有一个相当大的表来'传输'时?
答案 0 :(得分:1)
我在这种情况下做的一件事是创建同一个表的两个副本,然后创建一个指向具有当前表名称的一个或另一个的视图。
然后,SSIS包确定正在使用哪个表,并将表的连接设置为填充到另一个表。
然后exec SQl任务截断当前未使用的表。您可能还想在此时删除任何索引。
然后数据流填充当前未使用的表。
然后重新创建您删除的所有索引。
最后,exec SQL任务将删除并创建视图以使用刚刚填充的表而不是另一个表。
被引用表的总停机时间?对于drop和create视图,通常不到一秒钟,无论填充表格需要多长时间。