在 SSIS 中截断 table

Truncate table in SSIS

我在 SSIS 中有一个简单的数据流(定义于 visual studio 2013),它使用 SQL 从一个 sql 服务器实例的 [=25] 中提取数据=] A 然后将其添加到另一个 SQL 服务器实例的 table B.

截断 table B 中数据的最佳实践模式是什么?像这样的截断语句:

TRUNCATE TABLE B

在 table A 的 select 语句之后 - 特别是当您有相当大的 table 到 'transmit' 时?

在这种情况下,我做过的一件事是创建相同 table 的两个副本,然后创建一个指向具有当前 table 名称的一个或另一个的视图.

然后 SSIS 包确定正在使用哪个 table 并设置 table 的连接以填充到另一个 table。

然后 exec SQl 任务截断当前未使用的 table。此时您可能还想删除任何索引。

然后数据流填充 table 当前未使用。

然后重新创建您删除的任何索引。

最后一个 exec SQL 任务删除并创建视图以使用您刚刚填充的 table 而不是另一个。

被引用的 table 的总停机时间?无论填充 table 需要多长时间,放置和创建视图通常不到一秒钟。