在Package中声明一个variable,在package运行的过程中,SSIS如何update Variable?

第一种方法:使用 Script Task 来更新Variable的值

1,创建一个variable ,VariableName是VarCode,并将变量传递到脚本的ReadWriteVariables数组中。

2,在C#脚本中,SSIS提供两种方式访问变量,第一种方式比较简单,推荐使用。

            //读写变量 第一种方式string VarName = this.Dts.Variables["User::VarName"].Value.ToString();int VarCode = int.Parse(this.Dts.Variables["User::VarCode"].Value.ToString());this.Dts.Variables["User::VarCode"].Value = 2;//读写变量 第二种方式 this.Dts.VariableDispenser.LockForRead("User::VarName");this.Dts.VariableDispenser.LockForWrite("User::VarCode");Variables vars=null;this.Dts.VariableDispenser.GetVariables(ref vars);string strName = vars["User::VarName"].Value.ToString();int iCode = int.Parse(vars["User::VarCode"].Value.ToString());vars["User::VarCode"].Value = 3;vars.Unlock();

第二种方法:使用 Script  Component 来更新Variable的值

1,创建变量

2,将变量传递到Script component中

3,使用C#脚本引用变量,在script component中引用变量有两种方式

3.1 使用变量名作为来引用变量

        int code = this.Variables.VarCode;//string name = this.Variables.VarName;//this.Variables.VarName = "New VarName";

在引用ReadWrite类型的变量时,可能会发生异常“在PostExecute之外不能锁定变量集合进行读写访问”,就是说,不能在PostExecute函数之外通过这种方式引用ReadWrite类型的变量,如果发生这种异常,只需要将引用ReadWrite类型的变量的代码放到PostExecute中就不会出错了。

3.2使用加锁方式来引用变量,这种方式能在PostExecute函数之外引用ReadWrite类型的变量

        this.VariableDispenser.LockForRead("User::VarCode");this.VariableDispenser.LockForWrite("User::VarName"); IDTSVariables100 vars = null; this.VariableDispenser.GetVariables(out vars); int iCode = int.Parse(vars["User::VarCode"].Value.ToString()); string strName = vars["User::VarName"].Value.ToString(); vars["User::VarName"].Value = "New VarName"; vars.Unlock();

第三种方法:通过Execute Sql Task 为变量赋值,通过Sql语句返回单行结果集,将结果集更新到接收数据的变量上。

Result Set属性:选择 Single Row

Sql Statement: 输入要赋值的sql语句  select 'ExecSqlCmd task' as Name, 2 as Code

Result Set选项卡:设置输出的单行结果和变量之间的映射关系

第四种方法:通过Execute Sql Task 为变量赋值,使用Sql赋值语句,将结果集更新到接收数据的变量上。

sql赋值语句主要有两种,select和set

declare @id intselect @id=1
set @id=1

创建Package变量

配置Execute Sql Task的属性

Result Set属性:选择 None

Sql Statement: 输入sql赋值语句  select ?='ExecSqlCmd task'

在Parameter mapping中配置Direction为Output

第五种方法:使用Expression Task为变量赋值

在Expression中输入赋值的Expression。

第六种方法:为变量设置初始值,在创建变量的Variables窗体中,在Value输入的值就是变量的初始值,也可以在Expression中,使用Expression为变量赋值

作者:悦光阴
出处:http://www.cnblogs.com/ljhdo/
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。

分类: SSIS 组件
本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/4498149.html,如需转载请自行联系原作者

SSIS package 更新 variable相关推荐

  1. 微软BI 之SSIS 系列 - 利用 SSIS 模板快速开发 SSIS Package

    开篇介绍 在做 ETL 项目的时候,往往很多 Package 的开发都是基于相同的模型和流程.比如在 Package 开始运行时需要向 Process Log 表中插入记录,在 Package 运行结 ...

  2. 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性...

    开篇介绍 通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task, ...

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

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

  4. 效率最高的Excel数据导入续---SSIS Package包制作图解全过程

    目的:本文主要是详细讲解SSIS Package包的制作过程 本人买过的一张盗版windows 2003操作系统光盘上,上面自带有很详细的图文介绍,也就是傻瓜版的系统安装图解.因此,本文打算也是采用那 ...

  5. 一次SSIS Package的调试经历

    SSIS Package的调试有时是一个非常艰难的过程,由于SSIS 编译器给出的错误信息,可能并不完善,需要程序员根据错误信息抽丝拨茧,寻找错误的根源,进而解决问题. 第一部分:SSIS提供的调试工 ...

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

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    ( ...

  7. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中)

    转载:http://www.cnblogs.com/jasenkin/archive/2010/10/06/ssis_package_information.html 本文目录: (一)背景 (二)数 ...

  8. allegro package更新PAD封装

    allegro 17.2里面更新引脚Pad的如下: 1:tools->padstack->refresh 2:在弹出的对话框点击"Refresh"即可:

  9. linux 查询日志 去重,linux命令(12)uniq去重

    实例详细说明linux下去除重复行命令uniq 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个 ...

最新文章

  1. pandas获取dataframe数据列的数据类型、获取dataframe每类数据类型数据列的个数、使用select_dtypes函数、include参数以及exclude参数按照数据类型筛选数据
  2. 产销对接行动倡议书-万祥军:农民丰收节交易会谋定机制
  3. php实战https请求,用php发https请求
  4. 防止多次提交的几个比较
  5. windows server搭建php mysql数据库_windows server 2008/2012安装php iis7 mysql环境搭建教程...
  6. Linux. C open创建文件,c-为什么open()用错误的权限创建我的文件?
  7. [转]使用SCOM 2012监控网络
  8. 都有哪些查找和下载英文文献的方法?
  9. 数据库系统概念第六版课后习题-第二章答案
  10. 单片机数码管万年历c语言,基于51单片机和数码管的万年历程序
  11. 从零开始发送数字签名邮件-outlook163邮箱windows
  12. David I 盛大之行 --关于delphi2010
  13. my love(新贵公子主题歌)铃声 my love(新贵公子主题歌)手机铃...
  14. oracle怎么算时间,Oracle时间计算
  15. EVE-NG环境搭建
  16. 有缺憾才有希冀----我的不完美求职经历
  17. scheduled一分钟执行一次_@Scheduled(cron = 0 0 * * * ?)实现定时任务
  18. excel2013做数据透视表
  19. SPT的全称为sql pass through
  20. C语言基础09 函数

热门文章

  1. 【AtCoder】ARC095 E - Symmetric Grid 模拟
  2. Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性
  3. HYDRAstor:可扩展的二级存储
  4. python截取关键字后的字符串_使用正则表达式获取python中特定字符串之后的所有内容...
  5. java读取文件内容,文件头有\ufeff
  6. 2.2 PostgreSQL 概念
  7. js最全的十种跨域解决方案
  8. 深入浅出Mybatis系列(一)---Mybatis入门[转]
  9. CGRect vs CGPoint vs CGSize
  10. php larval开发规范,数据模型 |《 Laravel 项目开发规范 5.5》| Laravel China 社区