2013-10-02 55 views
0

我有一个表,它存储从源数据库中删除的行的列表,以便可以在目标数据库中镜像此删除。我有一个数据流设置,其中包含以下项目的此列表:动态SQL与SSIS OLE DB命令

表名|主键名称|主键值

有关本表中的每一行,我要对我的目标数据库,它看起来像这样执行SQL语句:

DELETE FROM ? WHERE ? = ?

我添加了一个OLE DB命令与此作为命令文本,但是,当我去映射“可用目标列”时,没有列出。什么解决方法可用?

回答

0

我建议你使用一个变量并使用表达式来动态构建SQL,然后使用该变量作为OLE DB命令的源。

+0

我需要这个以每行为基础运行。一个变量表达式是否支持这个? – NickHeidke

+1

如果您将行集加载到对象类型的SSIS变量中,然后使用For-Each任务遍历对象中的每一行(ADO.Net数据集),那么是的,这样可以正常工作。以下是一个示例:http://pldineshtech.blogspot.com.au/2012/08/loop-through-each-row-in-table-using.html。它突出了可能的设计缺陷,即RBAR。例如,此方法的替代方法是将更改日志加载到目标中的表中,然后执行批量更新/插入操作。这将会更快,但可能更棘手。 –

+0

只有一列中的所有主键?允许组合主键可能会很棘手。 –

0

我认为对于这样的事情,使用Script Component执行操作会更好。 OLD DB Command不会处理动态表格部分。