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 = 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选项卡:设置输出的单行结果和变量之间的映射关系

时间: 2024-11-04 08:44:39

SSIS package 在运行时更新 variable的相关文章

CLR 运行时版本和错误0x80131700和0x80113101B

COM可见的.Net对象由标准COM调用实例化,例如CoCreateInstance.COM在注册表或激活上下文中找到CLSID,加载并调用mscoree.dll,该dll继续激活CLR和创建对象的过程.在此过程中,可能会出现错误0x80131700“未能加载运行时”或0x8013101b“此程序集是由比当前加载的运行时更新的运行时生成的,无法加载”.这两条消息都是运行时版本不匹配的结果.0x80131700并不一定意味着任何损坏,它只是意味着无法加载运行时.可能是因为未安装,或者未安装所需的版

(转)SSIS处理导入数据时, 存在的更新, 不存在的插入

问题描述: 当你把数据从其他数据库, 或者是文本文件之类的其他数据源导入到目的数据库时, 有时希望在导入的处理中, 能够实现"数据存在时更新, 不存在时导入" 在之前, 一般是通过导入临时表, 然后再判断处理导入正式表的, 在SQL Server 2005中, SSIS可以在导入处理时直接完成这种处理. 下面具体演示一下如何用SSIS完成这样的处理: 1.          准备测试环境 -- 1. 在数据库中创建下面的对象 USE tempdb GO CREATE TABLE dbo

无法更新运行时文件夹共享状态:在客户机操作系统内装载共享文件夹文件系统时出错--解决办法

1.问题描述: 在物理主机和虚拟机CentOS6.4共享文件的时候出现:无法更新运行时文件夹共享状态:在客户机操作系统内装载共享文件夹文件系统时出错 其他症状: vmware-hgfsclient  能够看到共享的文件夹名字 mount.vmhgfs  .host:/ /mnt  报错: Error: cannot mount filesystem: No such device 2.解决思路 /etc/vmware-tools/services.sh restart 如果出现FAILD yum

VS2010 基本运行时检查 和“Stack around the variable XX was corrupted”之间的关系

下午在重新整理一份代码,中间遇到这么一个问题:要么出现内存访问冲突,要么出现“Stack around the variable XX was corrupted”错误. 很是恼火! 先出现的是“Stack around the variable XX was corrupted”错误,网上查到的第一种解决方案是让在“项目-属性-配置属性-C/C++-代码生成中”,将基本运行时检查设置成默认值,原来的值为“两者(/RTC1,等同于 /RTCsu) (/RTC1)”. 修改后重新生成,错误是不见了

Java导入package编译后运行时提示无法加载主类的解决办法

Java代码中通过package导入包后,用命令行编译可以成功,但是运行时提示无法加载主类,这时候可以把编译后的class文件放在导入包的上一层文件夹,然后用 java 包名.类名 的命令形式运行 参考链接:点击这里 原文地址:https://www.cnblogs.com/excellent-ship/p/9134994.html

Intermediate_JVM 20180306 : 运行时数据区域

Java比起C++一个很大的进步就在于Java不用再手动控制指针的delete与free,统一交由JVM管理,但也正因为如此,一旦出现内存溢出异常,不了解JVM,那么排查问题将会变成一项艰难的工作. Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区.这些区域都有各自的用途,以及创建销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁.根据<Java虚拟机规范 7>的规定(注意:我们完全可以从新的JDK1.9开始了解,但

iOS开发——高级特性&amp;Runtime运行时特性详解

Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 简介 与Runtime交互 Runtime术语 消息 动态方法解析 消息转发 健壮的实例变量(Non Fragile ivars) Objective-C Associated Objects Method Swizzling 总结 引言 曾经觉得Objc特别方便上手,面对着 Cocoa 中大量

理解ASP.NET 5运行时命令:DNVM, DNX, 和DNU

ASP.NET 5 引入了一个新型的运行时,让我们可以现场交付模式组合式构建应用程序,而不依赖于宿主机上的.NET框架.这种新模式为我们提供了命令行工具(DNVM.DNX.DNU)用于管理我们的.net 版本,依赖的库和运行环境,我们可以不需要Visual Studio,只需要一个文本编辑器和命令行就可以开发一个应用程序. 了解.NET 版本管理器 (DNVM) 之间 ,.NET 执行环境 (DNX) 和.NET 开发实用程序 (DNU) 之间的关系是开发 ASP.NET 5的根本.在这篇文章我

opcache运行时配置参数详解

测试帖: http://www.aikaiyuan.com/6430.html 配置如下: opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1 配置说明: PHP的opcode缓存又出了新成员(说新不新,也有