SSIS:从字符串变量过滤多的GUID作为参数在数据流OLE源(SSIS: Filtering Mu

2019-06-26 10:21发布

我有一个SSIS包,获得的从SQL表中的新的GUID的列表。 然后我撕碎的GUID到一个字符串变量,以便我让他们以逗号分隔出来。 他们是如何出现在变量的一个例子是:

'5f661168-aed2-4659-86ba-fd864ca341bc','f5ba6d28-7283-4bed-9f11-e8f6bef225c5'

问题是在数据流任务。 我使用变量作为参数在一个SQL查询来获取我的源数据,我不能让我的结果。 当WHERE子句的样子:

WHERE [GUID] IN (?) 

我得到一个无效字符错误,所以我发现了隐式转换与GUID的像我认为他们会不起作用。 我可以把{}周围的GUID解决此,如果这是一个GUID但也有潜在的4点或5个不同的GUID,这将需要检索在运行时。

搞清楚我可以得到它周围有这样的:

WHERE CAST([GUID] AS VARCHAR(50)) IN (?)

但是,这只是不产生任何结果应该有两个在我目前的测试。

我想必须有做到这一点的方式......我在想什么?

Answer 1:

你不能,至少不会使用您所提供的机制。

不能连接值,并与参数的工作。

我愿意被证明是错误的这一点,但我会被定罪,如果我可以使它发挥作用。

我怎样才能使它发挥作用?

诀窍是刚刚去老同学,并通过串建筑/级联查询。

在我的包,我定义的两个变量, filterquery 。 过滤器将是你已经在执行的连接。

查询将是表达(右击,属性:设置EvaluateAsExpression为True时,表达会是这样的"SELECT * FROM dbo.RefData R WHERE R.refkey IN (" + @[User::filter] + ")"

在您的数据流,那么你的源从变量更改为SQL命令。 要求有没有映射。

基本外观和感觉会像

OLE源查询



文章来源: SSIS: Filtering Multiple GUIDs from String Variable as Parameter In Data Flow OLE Source