SSIS - SQL命令 - 参数

时间:2017-05-01 21:58:44

标签: sql-server ssis oledb etl query-parameters

我根据哈迪给出的解决方案编辑了这个问题。

我在VS 2013中使用SSIS。 我有一个名为MyVariableList和Query的用户变量。 enter image description here

这是用户变量中的表达式查询:“SELECT cola,colB FROM myTable WHERE myID IN(”+ @ [User :: MyVariableList] +“)” enter image description here

我有一个脚本任务,用于设置@ [User :: MyVariableList]的值。

Dts.Variables["User::MyVariableList"].Value = sList;

enter image description here

之后,我有一个带有OLE DB源的数据流任务(从1个数据库)到另一个OLE DB目的地(另一个服务器上的另一个数据库)。 在OLE DB源代码编辑器中,我设置 数据访问模式:来自变量的SQL命令 变量名:User :: Query enter image description here

在OLE DB Source连接中,我将DelayValidation设置为True enter image description here

在我甚至可以运行包之前,我收到此错误 enter image description here 我该如何解决这个问题?谢谢

1 个答案:

答案 0 :(得分:1)

首先,您正在使用project parameter而不是project variable

使用参数化sql命令无法实现此目的,您必须在变量中构建整个查询,并将其用作源(来自变量的SQL命令)

参数用于指定单个值,而不是连接查询字符串

创建一个SSIS变量(Evaluate As Expression),将变量Expression属性更改为True,并将该表达式写入变量"SELECT cola, colB FROM myTable WHERE myID IN (" + @[$Project::MyProjectVariable] + ")" 属性中。如下所示

@[$Project::MyProjectVariable]

注意:要在表达式中使用项目参数,请使用以下语法:{ "name": "test-mmc-deploy", "id": "local$3d2075c5-73c0-47aa-8df5-cee3a70f68c4", "lastModified": "Mon, 1 May 2017 13:56:15.980 AEST", "servers": [ "local$520ee705-bdbb-4132-94cf-63bb213d2b46" ], "status": "DEPLOYED", "applications": [ "local$f3d791bd-14d9-4491-9541-5fa04d8c3164" ], "href": "http://localhost:9090/mmc-console-3.8.2/api/deployments/local$3d2075c5-73c0-47aa-8df5-cee3a70f68c4", "clusterNames": [], "reconciled": false, "clusterIds": [] }