通过ADO.NET连接更新数据仓库

时间:2018-02-06 23:26:23

标签: sql sql-server azure ssis

我构建了一个SSIS包,它查看源表并将此数据推送到Azure中的数据仓库。到目前为止,它添加的条目不在仓库中,而是在源表中。我对如何执行此包的更新部分感到困惑,其中数据仓库包含与源表相同的条目,但需要更新以反映对源表所做的更改。

使用OLE DB连接时,目标高级编辑器的“自定义选项”部分中有一个“SQL”参数。 ado.net目的地高级编辑器没有这种能力。更新这些条目的正确方法是什么?

到目前为止,这是我的软件包的截图: enter image description here

我进行了广泛的搜索,但却找不到明确的答案。如果这是一个简单的解决方案,请原谅我的错误。

1 个答案:

答案 0 :(得分:1)

您有两种可能的方法 - 使用OLEDB命令更新并使用中间表更新w。

OLEDB Command Transformation为数据转换中的每一行数据块运行指定的命令。您只需将OLEDB Command添加到数据转换中,选择 OLEDB Connection Manager 并输入这样的参数化SQL命令 enter image description here 点击省略号打开SQL Command Editor窗口 enter image description here
使用参数设置SQL命令后,您可以将数据流中的字段绑定到下一个选项卡上的参数 enter image description here
这就是它!更多信息 - MS Docs
这种方法的优点 - 很简单。缺点 - 对于每个更新行,都会触发一个单独的SQL命令,这对性能不利。

然后您可以通过中间表进行更新。主要思想 - 您将要更新的所有表行存储在特殊表中。然后 - 运行带有SQL Update的SQL Command,如

Update [tgt_tbl] Set [tgt_tbl].[field1] = [interm_tbl].[field1] 
    From [tgt_tbl] tgt  
    Inner Join [interm_tbl] itbl On tgt.key = itbl.key

这种方法更复杂,但性能肯定更好。