我在 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任务,但这仅适用于所有表都来自同一数据库的情况。
有什么建议吗?
如果尝试在 SSIS 中执行此操作,请在控制流中运行一个Execute SQL Task
,该对Table A
中符合条件的记录进行计数,并将变量设置为true
(如果有)或false
(如果有)。
创建从Execute SQL Task
到要执行truncate
和insert
语句的连接。 右键单击箭头并选择Edit...
以设置Condition
,如果您刚刚设置的变量True
或False
遵循该路径或不遵循该路径。
创建与控制流中下一步的连接(如果有),并将此连接的LogicalAnd
属性更改为false
。 您应该看到箭头发生了变化,以显示不同的优先级行为。 创建从原始Execute SQL Task
到控制流中的下一步的另一个连接。 此箭头也应该看起来不同。
现在,当您运行此包时,将设置变量,true
或false
是否truncate
和insert
,然后遵循控制流中的正确路径。 一旦这些路径中的任何一个命中下一步(其中只有一个应该执行),您的包将继续正常进行。