一、优先约束和执行逻辑

  任务和容器是SSIS中的可执行文件,一个优先约束连接着两个可执行文件:优先的可执行文件和约束的可执行文件,如下图。

  

  它的执行逻辑如下图:

  1)先执行优先可执行文件

  2)判断优先约束的结果是否为真

  3)若为真,则执行约束可执行文件,否则结束进程

  

  二、优先约束的设置

  优先约束的判断结果取决于优先的可执行文件执行时的返回结果是否与优先约束的设置或表达式结果相匹配。一个可执行文件的执行结果可以是成功或者失败。优先的可执行文件可以选择3种执行结果:成功、失败和完成。下面是优先约束的设置及对应的优先可执行文件执行的返回结果。

  

三、下面实际操作一下

1)创建并打开一个SSIS的空白包,定义变量V,数据类型为int32,默认值为1。

   2)拖拽一个脚本任务到设计区域,重命名为“Source”,然后渎复制这个脚本任务并重命名为“Destination”,然后使用优先约束连接,如下图。

  

  3)执行包,可以看到执行成功了。

  

  4)单击“停止调试”按钮关闭执行,打开脚本任务“Source”和“Destination”后可以看到里面的代码。

  5)修改脚本任务“Source”中95行的代码如下。

    Dts.TaskResult = (int)ScriptResults.Failure;

  6)再执行包,可以看到执行错误。这是以为“Source”返回的是“失败”,而优先约束定义的是执行成功后继续,这样,包执行完“Source”任务后就会停止执行。

  

  7)在绿色的线上右键,然后“失败”。

  

  8)再次执行包,可以看到“Destination”任务执行成功了,这是因为“Source”返回的失败与优先约束中的设置匹配。

  

  9)上图红色的箭头线上右键->选择“编辑...”->打开优先约束编辑器。

  在约束选项中,计算操作中包含一下4种:

  • 约束
  • 表达式
  • 表达式和约束
  • 表达式或约束

  

  10)选择“表达式和约束”->单击表达式右侧的“...”打开表达式编辑器->写入表达式"@[User::V]==1"后单击OK。

  

  11)执行包,"Destination"执行成功。这是由于表达式和约束返回的都是True。图中“fx”表达优先约束中包含有表达式。  

  12)右键红色的线->选择“Success”->将变量V的值改为2,执行包,“Destination”没有执行,因为表达式@[User::V]==1返回的结果是False。

  

  13)打开优先约束编辑器->修改约束条件为“表达式或约束”。

  

  14)再次执行包,可以看到“Destination”执行成功了,因为约束和表达式是“或”的关系(True || False = True)

转载于:https://www.cnblogs.com/MR-zhang-01/p/9290589.html

SSIS - 5.优先约束相关推荐

  1. ssis配置文件优先级_SSIS优先约束概述

    ssis配置文件优先级 This article explores the SSIS Precedence Constraints, along with examples and scenarios ...

  2. ssis for循环容器_SSIS包中的序列容器

    ssis for循环容器 This article explores the Sequence container in SSIS package with examples. 本文通过示例探索了SS ...

  3. 使用SSIS包导入SQL Server FILESTREAM数据

    初始配置 (Initial configuration) We have been exploring the SQL Server FILESTREAM feature in this ongoin ...

  4. ssis 表达式任务_SSIS表达式任务与将变量作为表达式求值

    ssis 表达式任务 In this article, I will first give an introduction about SSIS expressions, then I will de ...

  5. 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache...

    开篇介绍 先简单的演示一下使用 Lookup 组件实现一个简单示例 - 从数据源表 A 中导出数据到目标数据表 B,如果 A 数据在 B 中不存在就插入新数据到B,如果存在就更新B 和 A 表数据保持 ...

  6. c#直接调用ssis包实现Sql Server的数据导入功能

    调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...

  7. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...

     本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    (三)SSIS的简介    (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...

  8. 创建SSIS包—循环和动态package

    在上一个随笔中我们处理了一个010305c.dat文件,如果在一个文件夹中有多个dat文件应该怎么办呢? 这里就需要使用Foreach Loop container任务来循环处理文件,这个需要使用多个 ...

  9. SqlServer的SSIS导入导出数据时找不到连接错误处理

    SqlServer的SSIS导入导出数据时找不到连接错误处理 报错: 找不到连接"SourceConnectionOLEDB".如果找不到特定的连接元素,Connections集合 ...

最新文章

  1. iOS集成sharesdk遇到的坑
  2. 安全实现Linux网络监控(1)
  3. eclipse和myeclipse中如何关闭自动补全括号,花括号,双引号等功能
  4. JAVA获取json中的值
  5. P2766-最长不下降子序列问题【网络流,dp】
  6. python 模块学习--Numpy
  7. 作为一个上市公司HR,跟大家分享一些面试的真相
  8. python framework threads_Python - 多线程
  9. 通过opencv的函数进行图片修复:cv2.inpaint()
  10. 如何把meshlab中的圆环去掉_MeshLab中配准点云
  11. OpenCV学习1--介绍与环境搭建
  12. MySQL必知必会(二)
  13. cartographer环境配置及运行
  14. Altium designer 原理图转换为pcb时出现的 unknown pin 和 failed to add class member
  15. 数学建模美赛历年优秀论文(O奖)
  16. VUE中使用Echarts图表
  17. html表格中加入斜线,Html Table 表格 画斜线
  18. 计算机安全证书有问题怎么办,提示此网站的安全证书有问题怎么办
  19. 【软件工程】数据流图 ( 数据流图简介 | 数据流图概念 | 数据流 | 加工 | 数据存储 | 外部实体 | 数据流图分层 | 顶层数据流图 | 中层数据流图 | 底层数据流图 )
  20. TI公司Tina-ti和FilterProDesktop下载地址

热门文章

  1. Visual Studio 2017最新版正式发布!适用于任何开发人员、平台及APP丨附下载
  2. MongoDB Windows环境安装及配置
  3. 专业写博一天------ArrayList 线程安全
  4. linkText()的用法
  5. lintcode 滑动窗口的最大值(双端队列)
  6. IPv6的脚步声近了!
  7. GVRP和VTP比较
  8. Prometheus 由于时间不同步导致数据不显示
  9. Two ways to assign values to member variables
  10. Deno 兼容浏览器具体指的是什么?