【问题标题】:precedence constraint editor in ssis packagessis 包中的优先约束编辑器
【发布时间】:2012-12-01 11:50:30
【问题描述】:

我想要一个 SSIS 包,在这种情况下我有两个变量:x=1 和 y=0 和 3 个任务:一个是执行 SQL 任务(任务 A)和两个脚本任务(任务 B 和 C)。我想当我们在任务 A 中选择 x=1 时,任务 B 运行,当在任务 A 中选择 y=0 时,任务 C 运行。在 A 和 B 之间的优先约束编辑器中,我选择带有成功值的 Expression 和 Constraint ,在 A 和 C 之间的优先约束编辑器中,我选择带有失败值的 Expression 和 Constraint 但我不知道在这些优先约束编辑器中必须写什么表达式。请帮我 尊重

【问题讨论】:

    标签: ssis editor package constraints operator-precedence


    【解决方案1】:

    您需要在设计时设置两个包变量来保存 x 和 y。

    在执行 SQL 组件的常规选项卡中,将结果更改为 SingleRow 并确保查询返回 1 行以及您需要的参数详细信息。转到结果集选项卡并将两个包变量 (x, y) 设置为查询返回的列。

    添加两个工作流,均来自执行 SQL 组件,均在成功时。对于第一个工作流(转到任务 B),将表达式设置为 @[User::x] == 1。对于第二个工作流(到任务 C),将表达式设置为 @[User::y] == 0 .

    如果您希望选项互斥,则必须在每个工作流中包含两个子句(即@[User::x] == 1 && @[User::y] !=0)。您必须计算出所有排列并将它们包含在表达式中以避免两个工作流触发。

    【讨论】:

    • 在部分 SQLStatement 中执行 SQl 任务编辑器我应该写这个查询:Declare @x int - Declare @y int - Set @x=1 - Set @y=0 - Select @x or Select @是的
    • 当我在部分 SQLStatement(Declare @x int - Declare @y int -Set @x=1 - Set @y=0 - Select @x) 和将表达式设置为 @[User::x] == 1(转到任务 B)并带有 SUCCESS 值,并将表达式设置为 @[User::y] == 0(到任务 C)并带有 FAILUR 值,两个任务 A并且任务 B 工作良好并变为绿色,但是当我将查询更改为:选择 @y 时,任务 C 不起作用,任务 A 和任务 B 再次工作并变为绿色。我希望在每次更改查询时仅在任务 B 或 C 上运行。请帮助我,尊重
    • 我的另一个问题是:在做任何事情之前是否有必要将 x 和 y 定义为变量???
    • 听起来您正在创建局部变量(声明...)而不是包变量。局部变量仅在该组件的生命周期内存在。如果您想在工作流的后面依赖这些值,则需要使用包变量。另外,忘记失败的工作流程。这是针对组件失败的,NOT,工作流表达式值。我将在答案中添加更多细节以提供帮助
    • 您最初提出的问题是“ssis 包中的优先约束编辑器” - 这是已回答的问题。我们现在讨论“如何编写 SQL 语句”或“如何使用执行 SQL 任务返回单行”。两者都与“优先约束”无关!回顾一下我以前的cmets。首先,您需要正确设置 sql 并将其格式化为两列 x 和 y。尝试在您的执行 sql 中使用它来让您“选择 1 作为 x,2 作为 y”(没有语音标记)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多