在SSIS开发ETL(Extract-Transform-Load),数据抽取、转换、装载的过程。咱们须要本身定义变量数据库
1、SSIS变量简介编程
SSIS(SQL Server Integration Services,SQL Server整合服务)变量分分为两种,一种是系统变量,一种用户定义的变量。系统变量包括有关包、容器、任务或事件处理程序的很是有用的信息。例如,在运行时,MachineName系统变量包含运行包含的计算机的名称,StartTime变量包开始运行的时间。系统变量是只读的。在SSIS中,用户变量是用户在开发的过程当中根据须要申明的变量。用户变量可使用在脚本中,在由优先约束、For循环容器、派生列转换和条件性拆分转换使用的表达式中,以及在更新属性值的属性表达式中。编程语言
在各类编程语言中申明的变量通常状况下都会有做用范围的,SSIS变量也不例外,SSIS变量也是有做用范围的。根据做用范围分类,变量分为包变量和组件变量。包变量在包任何一个组件中均可以调用,组件变量只可以在声明变量的组件中有效。在变量的窗口中能够看到变量的做用域。post
能够看到i变量的做用域是整个Package1包,而myconfig变量做用域是数据流任务组件。code
2、SSIS用户变量的声明、赋值、使用orm
一、申明变量blog
申明变量是很是简单、若是你要申明包变量,只要单击控制流选项卡,而后在包开发区域空白处单击右键选择变量命令,或者新建变量按钮就新建一个变量,输入名称,选择数据类型,赋初值就完成了。事件
若是要声明某数据流任务组件使用的变量,只要双击该数据流任务组件,在流控制控制选项卡空白的地方单击右键选择变量命名,在变量窗口中新建一个变量命令,在变量窗口中新建一个变量,这时变量的做用域就是你选择的流任务组件。作用域
二、赋值开发
在实际开发中,除了在变量声明的时候给变量赋值外,还有两种方式,一种是经过执行SQL任务组件返回值的方式给变量赋值,一种是经过脚本组件来给变量赋值。
在执行SQL任务组件方法是先设置好组件的数据库链接属性,而后输入从数据库取数据的SQL语句,设置组件返回的结果集为单行。在结果集界面中单击“新建”,在结果集那一列输入你刚才SQL返回列的名称,在变量名称列选择你要赋值的变量
图中红色方框中的SQL语句很是简单,返回单行,结果是1。在图4中,将返回的result列的一行赋值给用户变量i。
利用脚本组件赋值变量比较简单,只须要设置脚本组件的ReadOnlyvariable或者ReadWriteVariable,将变量的名称设置他们的值(多个变量以逗号分割),它们的区别是前者在脚本组件只可以读,或者能够读写。而后在脚本组件中经过
Dts.Varables("变量名称").Value=值
三、变量的使用
变量在ssis中使用的地方不少,笔者介绍两个典型的应用。
(1) 执行 SQL 任务组件的参数
假定申明了一个日期类型变量StartDate,用户须要经过从某个表中选择在StartDate日期以前的数据,这个时候须要将StartDate做为参数传给执行 SQL 任务组件。在执行 SQL 任务组件输入SQL的地方输入以下命令语句:
SELECT * FROM TABLE_a WHERE 日期字段 < ?
而后在参数据映射界面新增映射,在变量名称列选择用户变量StartDate,选择类型为DATE,在参数名称列输入给参数取的名称。这样就能够将StartDate变量传给SQL任务组件的SQL语句了。
(2) 在脚本组件中赋值
能够在脚本组件中经过Dts.Variables("i").Value = 1方式赋值给变量,也能够经过这种方式来使用变量。好比Dts.Variables("other_variable").Value = Dts.Variables("i").Value+1,这个语句是能够在脚本组件中执行的,将i变量加1后赋值给另一个变量。