SQL执行任务中的SSIS变量表达式设置错误

时间:2019-07-17 12:09:10

标签: sql-server variables ssis expression etl

我有一个SSIS包,在其中运行SQL执行任务以获取一些记录,然后运行foreach循环,迭代返回的ADO对象并设置一些变量值。

这些变量用于数据流任务查询。我需要为变量设置表达式。

在行中,我具有类似于"foo" + @[User::Bar] + "baz"的值(我直接使用此表达式设置了它,它起作用了。我想从sql输出中设置它)

但是当我从SQL任务到变量表达式获取此值时,SSIS会将引号转义,我不想转义这些引号以使任务正常工作。

  

保存的值:“ foo” + @ [User :: Bar] +“ baz”

     

变量集:\“ foo \” + @ [User :: Bar] + \“ baz \”

有人可以帮助我吗?我想要保存的表达式,由于这种强制转义,导致查询设置不正确。

1 个答案:

答案 0 :(得分:0)

如果以下值存储在变量中(例如Serial1.println("POST /loginAjax/ HTTP/1.1"); Serial1.println("Host: dev-aquhivedata.herokuapp.com"); Serial1.println("Content-Type: application/x-www-form-urlencoded"); Serial1.println("Content-Length: 28"); Serial1.println(""); Serial1.println("username=E***&pwd=A*********"); Serial1.println(""); Serial1.flush(); while(Serial1.available()) { char c = Serial1.read(); Serial.print(c); }

  

\“ foo \” + @ [User :: Bar] + \“ baz \”

添加具有以下表达式的Expression任务:

@[User::Var1]

或使用以下表达式创建一个新变量:

@[User::Var1] = REPLACE(@[User::Var1],"\\","")

实验

我使用以下创建了字符串类型的变量REPLACE(@[User::Var1],"\\","")

@[User::Variable]

然后我用以下表达式创建了另一个字符串类型的变量\"foo\" + @[User::Bar] + \"baz\"

@[User::Variable1]

值转义字符不见了:

enter image description here