String SSIS:从字符串变量中筛选多个GUID作为数据流OLE源中的参数
我有一个SSIS包,它从SQL表中获取新GUID的列表。然后,我将guid分解成一个字符串变量,以便用逗号将它们分开。它们在变量中的显示方式示例如下:String SSIS:从字符串变量中筛选多个GUID作为数据流OLE源中的参数,string,variables,ssis,oledb,guid,String,Variables,Ssis,Oledb,Guid,我有一个SSIS包,它从SQL表中获取新GUID的列表。然后,我将guid分解成一个字符串变量,以便用逗号将它们分开。它们在变量中的显示方式示例如下: '5f661168-aed2-4659-86ba-fd864ca341bc','f5ba6d28-7283-4bed-9f11-e8f6bef225c5' 问题出在数据流任务中。我在SQL查询中使用该变量作为参数来获取源数据,但无法获取结果。当WHERE子句看起来像: WHERE [GUID] IN (?) 我得到一个无效字符错误,所以我发
'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 (?)
但这根本不会产生结果,在我目前的测试中应该有两个结果
我想一定有办法做到这一点。。。我缺少什么?你不能,至少不使用你提供的机制 不能连接值并使其与参数一起工作。 在这一点上,我很乐意被证明是错误的,但如果我能做到的话,我会被诅咒的 我怎样才能让它工作? 诀窍是老一套,通过字符串构建/连接进行查询 在我的包中,我定义了两个变量,
filter
和query
。过滤器将是您正在执行的连接
查询将是一个表达式(右键单击,属性:将EvaluateExpression设置为True,表达式类似于“SELECT*FROM dbo.RefData R WHERE R.refkey IN(“+@[User::filter]+”)”
在数据流中,然后将源代码从变量更改为SQL命令。无需映射
基本的外观和感觉应该是
OLE源查询
几年后,我们开始讨论这个问题,但感谢您在回答中提供的精彩细节。