SSIS package 更新 variable
在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的更多相关文章
- 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性
开篇介绍 通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task, ...
- 微软BI 之SSIS 系列 - 利用 SSIS 模板快速开发 SSIS Package
开篇介绍 在做 ETL 项目的时候,往往很多 Package 的开发都是基于相同的模型和流程.比如在 Package 开始运行时需要向 Process Log 表中插入记录,在 Package 运行结 ...
- SSIS Package to Call Web Service
原文 SSIS Package to Call Web Service SSIS Package to Call Web Service. You can Call WebService from S ...
- 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 ...
- SSIS 增量更新
本文转自 http://sqlblog.com/blogs/andy_leonard/archive/2007/07/09/ssis-design-pattern-incremental-loads. ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- 一次SSIS Package的调试经历
SSIS Package的调试有时是一个非常艰难的过程,由于SSIS 编译器给出的错误信息,可能并不完善,需要程序员根据错误信息抽丝拨茧,寻找错误的根源,进而解决问题. 第一部分:SSIS提供的调试工 ...
- 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 ...
- ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案
原文:ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案 针对 SSIS intergation 项目 > 属性 > Debug >Run64bITRunt ...
随机推荐
- Eclipse插件收集
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [在Eclipse文件列表中打开文件所在 ...
- html form 提交表单的一些问题
1. 如果在一个form里有summit按钮,则只能提交本form的内容
- c# WebBrower 与 HttpRequest配合 抓取数据
今天研究一个功能,发现一个问题. 通过webbrower模拟用户自动登录可以完成,并且可以取到相对应的页面内容. 但是如果页面中通过ajax,动态加载的内容,这种方式是取不到的,于是用到了httpRe ...
- 创建GitHub技术博客全攻略
http://blog.csdn.net/renfufei/article/details/37725057 http://www.pchou.info/web-build/2014/07/04/bu ...
- Java学习日记之 Java-其他类型
OK , 就绪, 第一篇博客开撸 ~ 先听了毕姥爷激情澎湃的其他类型 ,从这里开始入手吧 : (一)System类 System类代表系统类,系统的属性和方法都放在该类.System类是一个fina ...
- nil、Nil、NULL和NSNull的理解
http://blog.sina.com.cn/s/blog_4930f8e60101h71b.html 其实早就想研究一下nil.Nil.NULL和NSNull之间的区别,只是工作上除了nil,其它 ...
- EventBus的简单使用与原理
一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间 ...
- poj 1195 - Mobile phones(树状数组)
二维的树状数组,,, 记得矩阵的求和运算要想好在写.... 代码如下: #include <cstdio> #include <cstdlib> #include <cm ...
- redhat7 yum安装
redhat 的更新包只对注册的用户生效,所以我们自己手动更改成CentOS 的更新包,CentOS几乎和redhat是一样的,所以无需担心软件包是否可安装,安装之后是否有问题,另外CentOS公司去 ...
- NOSQL 数据库 CodernityDB
CodernityDB 是一个开源的纯 Python 实现的.无第三方依赖.支持多平台的 NoSQL 数据库. 关键特性: 纯 Python 开发 支持多索引 快速 (每秒将近10万的写入和超过10万 ...