SSIS - 当其他表包含具有特定值的数据时截断表

时间:2017-01-19 13:08:59

标签: sql-server tsql ssis

我在2个不同的数据库上有2个表。

当数据库A中的表A包含数据并且某个值写入特定列时,我需要截断数据库B上的表B并将数据从表A复制到表B.

所以,当表A看起来像:

ID | column2
1  | null
2  | null
3  | null 
然后我们什么都不做。

如果表A看起来像

ID | column2
1  | value
2  | value
3  | value

然后表B被截断,表A中的数据被复制到表B.

我尝试使用执行SQL任务,但这仅适用于所有表来自同一数据库的情况。

任何sugestions?

1 个答案:

答案 0 :(得分:3)

如果您尝试在SSIS中执行此操作,请在控制流中运行Execute SQL Task,其中Table A中符合条件的记录计数并将变量设置为{{1}如果有或true,如果没有。

false创建连接,但要执行Execute SQL Tasktruncate语句。右键单击箭头并选择insert以设置Edit...,如果您刚设置的变量为ConditionTrue,则设置为遵循该路径。

如果存在任何连接,请创建与控制流中下一步的连接,并将此连接的False属性更改为LogicalAnd。您应该看到箭头更改以说明不同的优先级行为。创建从原始false到控制流中下一步的另一个连接。此箭头也应该看起来不同。

运行此软件包时现在会发生的变化是,对Execute SQL Tasktrue是否falsetruncate设置变量按照控制流中的正确路径进行操作。一旦这些路径中的任何一个到达下一步(其中只有一个应该执行),您的包将继续正常。