Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String SSIS:从字符串变量中筛选多个GUID作为数据流OLE源中的参数_String_Variables_Ssis_Oledb_Guid - Fatal编程技术网

String SSIS:从字符串变量中筛选多个GUID作为数据流OLE源中的参数

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 (?) 我得到一个无效字符错误,所以我发

我有一个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 (?)
但这根本不会产生结果,在我目前的测试中应该有两个结果


我想一定有办法做到这一点。。。我缺少什么?

你不能,至少不使用你提供的机制

不能连接值并使其与参数一起工作。 在这一点上,我很乐意被证明是错误的,但如果我能做到的话,我会被诅咒的

我怎样才能让它工作? 诀窍是老一套,通过字符串构建/连接进行查询

在我的包中,我定义了两个变量,
filter
query
。过滤器将是您正在执行的连接

查询将是一个表达式(右键单击,属性:将EvaluateExpression设置为True,表达式类似于
“SELECT*FROM dbo.RefData R WHERE R.refkey IN(“+@[User::filter]+”)”

在数据流中,然后将源代码从变量更改为SQL命令。无需映射

基本的外观和感觉应该是

OLE源查询


几年后,我们开始讨论这个问题,但感谢您在回答中提供的精彩细节。