在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 更新变量的更多相关文章

  1. Netty为什么不直接用AtomicXXX,而要用AtomicXXXFieldUpdater去更新变量呢?

    更多技术分享可关注我 前言 如果仔细阅读过Netty的线程调度模型的源码,或者NIO线程对象及其线程池的创建源码,那么肯定会遇到类似“AtomicIntegerFieldUpdater”的身影,不禁想 ...

  2. SSIS - 3.变量

    跟其他变成语言一样,SSIS包中的变量是用来存储临时值的,变量使得整个SSIS包使用起来更加灵活.比如,我们可以遍历一个文件夹来获取文件夹下的所有文件的名称并把名称存储到一个变量中以便进一步处理.在S ...

  3. 微软BI 之SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法

    开篇介绍 这个问题来自于 天善BI社区,看了一下比较有意思,因为我自己认为在 SSIS中处理各种类型文件的经验还比较丰富(有一年的时间几乎所有ETL都跟文件相关),但是这个问题确实之前没有特别考虑过. ...

  4. import 更新变量

    其他的模块的变量一经引用,是定值,只能再次import才能更新他的值

  5. 灵活运用SQL Server SSIS变量

    在SSIS开发ETL(Extract-Transform-Load),数据抽取.转换.装载的过程.我们需要自己定义变量 一.SSIS变量简介 SSIS(SQL Server Integration S ...

  6. 灵活运用SQL Server2008 SSIS变量

      在SSIS开发ETL(Extract-Transform-Load),数据抽取.转换.装载的过程.我们需要自己定义变量 一.SSIS变量简介 SSIS(SQL Server Integration ...

  7. SSIS变量属性中EvaluateAsExpression设置的作用

    我们在做SqlServer SSIS包开发的时候,经常会用到SSIS的变量,我们可以使用和修改SSIS变量的值使得SSIS包的逻辑更灵活,如下图所示: 在定义SSIS变量的时候可以使用固定值(如上图中 ...

  8. SSIS 学习(4):变量和表达式【转】

    变量,作为程序员的我们,是一个多么熟悉的概念,从开始学习编程的第一天起,就要了解什么是变量?如何定义一个变量?变量的使用范围等.现在还有必 要在这里大费口舌来讨论“变量”吗?不错,我们今天谈的变量,也 ...

  9. [译]Stairway to Integration Services Level 13 - SSIS 变量回顾

    介绍 在前一篇中我们组合了已经学过的事件冒泡 event bubbling, 日志记录 logging, 和父子模型 Parent-Child pattern 建立了自定义的SSIS包日志记录. 本文 ...

随机推荐

  1. ASP.NET Core 依赖注入最佳实践——提示与技巧

    在这篇文章,我将分享一些在ASP.NET Core程序中使用依赖注入的个人经验和建议.这些原则背后的动机如下: 高效地设计服务和它们的依赖. 预防多线程问题. 预防内存泄漏. 预防潜在的BUG. 这篇 ...

  2. ABP(ASP.NET Boilerplate Project)框架探讨

    从官网上下载下来带Module-Zero的abp框架. vs2015打开解决方案. 首先让系统run起来.把webconfig数据库连接改一下.启动程序. 发现报错:“本地语言指定”的错误,之后运行n ...

  3. 如何把高版本的sqlserver 还原到低版本的 sqlserver(转载)

    本例为sql2012 还原到sql2008. 要实现的功能是把sql2012的数据库备份到sql2008,数据库名字为Test,并且这两个数据库在不同的电脑中. 微软的软件设计方案基本上都是新版本兼容 ...

  4. .Net 环境

    更多系统版本下载:https://www.microsoft.com/net/download VSCode :https://code.visualstudio.com/

  5. HDFS核心设计

    一.HDFS核心设计 数据块(block) 数据块是HDFS上最基本的存储单位 HDFS块默认大小为128M         对块进行抽象会带来的好处 一个小文件的大小可以大于网络中任意一个磁盘的容量 ...

  6. PowerShell “execution of scripts is disabled on this system.”

    Set-ExecutionPolicy RemoteSigned

  7. 2.js深入(以通俗易懂的语言解释JavaScript)

    1.函数返回值: 即函数的执行结果 可以没有return 经验:一个函数应该只返回一种类型的值 2.函数传参 可变参(不定参):arguments ——>(参数的个数可变,参数数组) 例子1:求 ...

  8. input file 美化

    <input type='file'>的默认外观实在难看,绝大多数情况都需要对其美化.找了很多资料,目前发现以下方式是最简单的美化方式. 1.将file input用label包裹起来,然 ...

  9. Docker技术入门与实战 第二版-学习笔记-6-仓库

    仓库(Repository)是集中存放镜像的地方 一个容易混淆的概念是注册服务器(Registry). 实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像. ...

  10. 爬虫代理squid

    yum -y install squid 配置文件一般是在/etc/squid3/下的squid.conf文件 pyspider使用的时候只需要设置代理服务器为你配置好的服务器的IP就可以了 clas ...