如何在 SSIS 变量的 where 语句中传递多个值?

How to pass multiple values in where statement in SSIS variable?

我正在创建一个 SSIS 程序包,它有两个变量,它们将赋值给另一个 SQL 命令变量。数据源是 ODBC 连接器,目标是 OLEDB 连接器。

变量名称:

一个变量是一行,这个行。另一个变量是将在 IN 子句中摄取的多个值。但是我无法在这个中传递多个值,我已经尝试了 Single rowFull result set 但也不起作用。

第一个变量结果(vPurchaseType):

查询示例:

SELECT Head FROM TableB
Head
12
9C
AA

第二个变量必须在单引号之间才能工作。

第二个变量结果(vTransactionDate):

查询示例:

SELECT Head FROM TableA
Head
2020-01-01

第三个变量:

SELECT
  ColA,
  ColB,
  ColC,
  ColD
FROM TableC
WHERE ColC >= '"+ @[User::vTransactionDate] + "'
AND ColD IN ("+ @[User::vPurchaseType] +")

我的包裹:

基本上,我使用的是 MyTecBits - SQL Server: Concatenate Multiple Rows Into Single String 中这篇文章的解决方案,并将其应用于我的变量 vPurchaseType,并接收值为 Single Row .但是我不得不稍微更改一下查询,使用函数 CAST AS VARCHAR (4000) 接受我列中的所有数据。

之后我更改了 Data Flow,并将 OLEDB Destination 替换为 ADO Net Destination,我还必须将选项 ValidadeExternalMetadata 标记为 False,就是这样!现在正在工作。