在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 = ; //读写变量 第二种方式
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 = ; 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 int

select @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为变量赋值

SSIS package 更新 variable的更多相关文章

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

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

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

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

  3. SSIS Package to Call Web Service

    原文 SSIS Package to Call Web Service SSIS Package to Call Web Service. You can Call WebService from S ...

  4. How to Configure an SSIS Package to Access a Web Service using WCF

    This information is from:http://blogs.msdn.com/b/dbrowne/archive/2010/07/08/how-to-configure-an-ssis ...

  5. SSIS 增量更新

    本文转自 http://sqlblog.com/blogs/andy_leonard/archive/2007/07/09/ssis-design-pattern-incremental-loads. ...

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

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

  7. 一次SSIS Package的调试经历

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

  8. SQL Server(SSIS package) call .net DLL

    There are two method to call .net DLL in SQLSERVER. The first one is to use the sql clr but it has a ...

  9. ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案

    原文:ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案 针对 SSIS intergation 项目 > 属性 > Debug >Run64bITRunt ...

随机推荐

  1. golang坑1

    :=比较方便,不过今天掉进了一个小坑 var ( foo *XXX ) func bar() { fmt.Println(foo.abc) } func main() { foo, err := XX ...

  2. Byte,TBytes,array of Byte, array[0..9] of byte的区别

    Byte前面已经说是存放bit的单元,是电脑内存的基本单位,byte表示0-255中的256个数字 下面为Byte的用法: var B: Byte; // 表示0-255的数字 begin B := ...

  3. Oracle 两个表之间更新的实现

    Oracle 两个表之间更新的实现   来源:互联网 作者:佚名 时间:2014-04-23 21:39 Oracle中,如果跨两个表进行更新,Sql语句写成这样,Oracle 不会通过.查了资料,S ...

  4. Kinect v2.0 for windows开发环境说明

    官方文档里是这些: Supported Operating Systems and Architectures The following operating systems and architec ...

  5. cas+shiro统一注销原理解析

    1,客户端发送一个注销请求到cas server,跟踪casorg.jasig.cas.CentralAuthenticationServiceImpl类的destroyTicketGrantingT ...

  6. 找回消失的ASUS显卡

    笔记本蓝屏了几次之后,发现独立显卡GT335M不见了,设备管理器,驱动精灵,都找不到,网上问这个问题的人还不少,得到的回答几乎都是说重装驱动.根本不行,这时候安装nVIDIA驱动,会提示说“未找到兼容 ...

  7. dubbo分布式rpc框架用法

    dubbo是阿里巴巴开源的分布式服务框架,致力于提供高性能和透明化的rpc远程服务调用方案,以及soa服务治理方案,如果没有分布式需求,是不需要dubbo的,分布式环境dubbo的使用架构官方给出了一 ...

  8. CrossOver 13.0 发布,Windows 模拟器

    允许在 Linux 和 OS X 平台运行 Win32 程序的 CrossOver 套件发布 13.0 版本,带来了完全重构的 3D 处理流程,将大幅度提高游戏性能. Linux 平台相关变化有: 带 ...

  9. .NET Framework3.0/3.5/4.0/4.5新增功能摘要

    Microsoft .NET Framework 3.0 .NET Framework 3.0 中增加了不少新功能,例如: Windows Workflow Foundation (WF) Windo ...

  10. 手机淘宝UWP

    各位园主好! bug 走势: 哪天bug 足够少,哪天就可以发布了  :) 2015/10/23: 49 2015/10/26: 40 2015/10/27: 36 2015/10/28: 30 20 ...