SSIS表达式中的大小写或if语句

时间:2019-03-14 20:14:16

标签: sql-server parameters ssis expression ssis-2012

我想使用SSIS中的一个项目参数来更改我们的数据源连接。

我试图在连接属性中编写一个表达式,但是我要简短一些。我希望能够评估一些不同的值,如果为true,则返回不同的值

这就是我所拥有的

@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]  
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] 
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]  
: "Unknown Server"))

我尝试将其他服务器添加到此代码中,但我一定不明白您如何评估其他结果并设置其他值

基本上,我正在这样做

如果Parameter = SERVER1然后给我SERVER1_ConnectionString,如果Parameter = SERVER2然后给我SERVER2_ConnectionString,依此类推...

编辑:语法正确,但是我的问题是项目参数有错字

1 个答案:

答案 0 :(得分:1)

将变量评估为表达式

最简单的方法是添加类型为String的变量@[User::ConnectionSting],选择以将该变量作为表达式求值,然后使用以下表达式:

@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]  
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] 
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]  
: ""))

然后单击OLEDB连接管理器,按 F4 以显示属性选项卡,转到表达式,选择ConnectionString属性并使用以下表达式:

@[User::ConnectionSting]

然后单击数据流任务和使用该连接的任务,并将Delay Validation属性设置为True

使用表达式任务

您可以使用相同的方法,但不必将@[User::ConnectionSting]用作表达式,而是在程序包开头添加一个Expression Task并使用以下表达式:

@[User::ConnectionSting] = (@[$Project::Parameter] == "SERVER1" ? 
@[$Project::SERVER1_ConnectionString] : ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] : ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString] : "")))