我想使用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
,依此类推...
编辑:语法正确,但是我的问题是项目参数有错字
答案 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] : "")))