2015-04-03 73 views
0

我一直试图在SSIS 2012中添加一个动态查询到查找转换编辑器(编写查询而不是查找表),我无法做到。我引用了许多文章(herethis),并且都表示要在属性中使用SQLCommand并将其作为表达式。但我无法得到。有没有东西丢失?下面是一个屏幕截图,而不是表达式编辑器,我正在获取字符串值编辑器。在ssis 2012中查看转换动态SQL查询

由于我没有10个声望,我无法发布屏幕截图。

+0

你能帮我理解为什么你认为你需要动态查询吗? – billinkc 2015-04-03 14:31:18

+0

我正在通过lookup Transformation进行查找,以实现类似这样的功能。 select * from table where col1 = variableName(这取决于用户的选择,这就是为什么我需要动态查询),然后将这些结果与我的输入结果进行查找,以便我可以筛选出符合我的查找条件的记录,并报告那些不匹配的。 – 2015-04-03 14:47:57

回答

0

从你连接的答案的解释也是有点令我困惑,所以也许你有同样的问题。您需要做的是:

在您的Control Flow中选择数据流任务。在数据流任务的属性中,您将看到属性表达式。按省略号,您应该可以配置SQLCommand的表达式。

enter image description here

+0

嗨JodyT,谢谢你的回复。我需要LookUp转换来执行符合条件的记录,并捕获与条件不匹配的记录。请检查我对billinkc的评论。 – 2015-04-03 14:49:23

0

在查找属性对话框,请确保您没有选择“完全缓存”模式。转到高级屏幕,并选中“修改SQL语句”。您可以在这里输入SQL语句?作为参数占位符并单击“参数...”将其值分配给输入列。看起来你不能使用变量,但是你可以在你的数据流源中填充一个额外的列来填充lookup参数。

+0

感谢您的回复,我没有尝试过这个选项,但我得到的参数不能从sql语句中提取。提供程序可能无法帮助解析语句错误中的参数信息。我没有检查我的OLEDB连接,并没有问题。 – 2015-04-09 17:48:12

+0

您在查找时尝试参数化的查询是什么? SSIS有问题参数化某些查询(子选择,cte等)。也许它可以用更简单的形式重写。 – 2015-04-09 18:01:20

+0

从表中选择Col1,Col2,Col3,其中Dept ='myparametershouldbehere'是我的连接管理器对查询 的查询,并且查找的输入具有Col1和Col2,在其上进行查找。所以SQL语句看起来像这样 select * from(从表中选择Col1,Col2,Col3,其中Dept ='fornowhardcodedValue')reftable where reftable.Col1 =? amd reftable.Col2 =? – 2015-04-10 12:32:19

1

如何使用Cache作为您的查找源?通过这种方式,您可以在DFT源中使用动态sql语句,并使用高速缓存转换作为目标,然后使用该高速缓存连接作为查找的源。