Sql server SSIS表达式中的Case或if语句
我想在SSIS中使用一个项目参数来更改数据源连接 我正试图在连接属性中编写一个表达式,但我遇到了一些问题。我希望能够计算几个不同的值,如果为true,则返回不同的值 这是我的Sql server SSIS表达式中的Case或if语句,sql-server,parameters,ssis,expression,ssis-2012,Sql Server,Parameters,Ssis,Expression,Ssis 2012,我想在SSIS中使用一个项目参数来更改数据源连接 我正试图在连接属性中编写一个表达式,但我遇到了一些问题。我希望能够计算几个不同的值,如果为true,则返回不同的值 这是我的 @[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString] : ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] : (
@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString]
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]
: "Unknown Server"))
我曾尝试将其他服务器添加到此代码中,但我一定不了解如何评估其他结果和设置其他值
基本上,我希望这样做
如果Parameter=SERVER1
则给我SERVER1\u ConnectionString
,如果Parameter=SERVER2
,则给我SERVER2\u ConnectionString
,依此类推
编辑:语法正确,但我的问题是键入了我的项目参数将变量计算为表达式 最简单的方法是添加String类型的变量
@[User::ConnectionSting]
,选择将此变量作为表达式计算,然后使用以下表达式:
@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString]
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]
: ""))
@[User::ConnectionSting]
@[User::ConnectionSting] = (@[$Project::Parameter] == "SERVER1" ?
@[$Project::SERVER1_ConnectionString] : ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] : ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString] : "")))
然后单击OLEDB连接管理器,按F4键以显示属性选项卡,转到表达式,选择ConnectionString属性并使用以下表达式:
@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString]
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]
: ""))
@[User::ConnectionSting]
@[User::ConnectionSting] = (@[$Project::Parameter] == "SERVER1" ?
@[$Project::SERVER1_ConnectionString] : ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] : ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString] : "")))
然后单击数据流任务和使用连接的任务,并将延迟验证
属性设置为True
使用表达任务
您可以使用相同的方法,但不是将@[User::ConnectionSting]
作为表达式进行计算,而是在包的开头添加一个表达式任务,并使用以下表达式:
@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString]
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]
: ""))
@[User::ConnectionSting]
@[User::ConnectionSting] = (@[$Project::Parameter] == "SERVER1" ?
@[$Project::SERVER1_ConnectionString] : ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] : ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString] : "")))
哈迪,我将给你答案,因为问题是我有一个名为错误的参数。似乎总是有一些简单的事情阻碍着我:)