如何灵活运用SQL Server 2005 SSIS变量

  随着SQL Server 2005不断的推广和普及,越来越多的企业的决策支持项目采用了SQL Server 2005商务智能解决方案。本文就SSIS开发ETL(Extract—Transform—Load,数据抽取、转换、装载的过程)过程中SSIS用户变量的使用向读者作简单介绍。

  一、 SSIS变量简介

  SSIS(SQL Server Integration Services,SQL Server整合服务)变量分为两种,一种是系统变量,一种用户定义的变量。系统变量包含有关包、容器、任务或事件处理程序的非常有用的信息。例如,在运行时,MachineName 系统变量包含运行包的计算机的名称,StartTime 变量包含包开始运行的时间。系统变量是只读的。在 SSIS 中,用户变量是用户在开发的过程中根据需要申明的变量。用户变量可以使用在脚本中,在由优先约束、For 循环容器、派生列转换和条件性拆分转换使用的表达式中,以及在更新属性值的属性表达式中。

  在各种编程语言中申明的变量一般情况下都会有作用范围的,SSIS变量也不例外,SSIS变量也是有作用范围的。根据作用范围分类,变量分为包变量和组件变量。包变量在包任何一个组件中都可以调用,组件变量只能够在申明变量的组件中有效。在变量的窗口中可以看到变量的作用域(如图1所示)。BeginDate就是TestPackage包变量,而i是数据转换这个数据流组件的变量。

  图1

   二、 SSIS用户变量的申明、赋值、使用

  1、 申明变量

  申明变量非常简单,如果你要申明包变量,只要单击控制流选项卡,然后在包开发区域空白处单击右键选择变量命令(出现如图1的画面),单击新建变量按钮就新建一个变量,输入名称,选择数据类型,赋初值就完成了 (如图2)。

  红色方框是新建变量按钮,蓝色方框是删除按钮。如果要申明某数据流任务组件使用的变量,只要双击该数据流任务组件,在流控制选项卡空白的地方单击右键选择变量命令,在变量窗口中新建一个变量,这时变量的作用域就是你所选的流任务组件。

  图2

  2、 赋值

  在实际开发中,除了在变量申明的时候给变量赋值外,笔者还摸索了两种方式给变量赋值,一种是通过执行 SQL 任务组件返回值的方式给变量赋值,一种是通过脚本组件来给变量赋值。

  利用执行 SQL 任务组件方法是先设置好组件的数据库连接属性,然后输入从数据取数据的SQL语句,设置组件返回的结果集为单行。在结果集界面中单击“新建“,在结果集那一列输入你刚才SQL 语句中返回列的名称,在变量名称列选择你要赋值的变量(过程如图3、图4所示)。

  图3

  图4

  图3中红色方框中SQL语句非常简单,返回单行,结果是1。在图4中,将返回的result列的一行赋值给用户变量i。

  利用脚本组件赋值变量比较简单,只需要设置脚本组件的ReadOnlyvariable或者ReadWriteVariable,将变量的名称设置为他们的值(多个变量以逗号分隔),它们的区别是前者在脚本组件只能够读,后者可以读写。然后在脚本组件中通过

Dts.Variables("i").Value = 1

  3、 变量的使用

  变量在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后赋值给另外一个变量。

时间: 2024-09-16 05:42:30

如何灵活运用SQL Server 2005 SSIS变量的相关文章

SQL Server 2005 SSIS Cluster手工配置指南

安装完成SQL Server 2005 Cluster之后,SSIS并不会默认安装成为Cluster,需要手工进行配置,配置过程请参考:http://msdn2.microsoft.com/en-us/library/ms345193(SQL.90).aspx##. 重要提示: Microsoft 不建议将 Integration Services 服务配置为群集资源,但并非强制. 配置前的准备: 1. 请首先安装并配置SQL Server 2005 Cluster: 2. 请在Cluster的

SQL Server 2005 SSIS技巧:动态目的文件名

问题:我想每日从数据库里导出一些数据,内容基本上都是一样的,只是时间不同,比如导出一张表wjz create table wjz (id int, name varchar(10), create_time datetime) 每天要导出的内容为select * from wjz where create_time >convert(varchar(30),getdate()-1,112) and create_time < convert(varchar(30),getdate(),112)

SQL Server 2005中的SSIS维护计划简析

SQL Server的每一个版本都已经逐渐变得越来越自我调整和自我维护了.然而,对于基本维护的需求,例如删除索引碎片,更新统计数据,检查数据库一致性,以及进行备份仍然是不会消失的.你可以想象一下,索引的维护就像是给你的汽车换油,备份就像是买保险.你可以没有保险,但是一旦你需要它,它就在手边.同样的,你的汽车可以在没有换油的情况下跑上几千公里,但是经常维护会产生更好的性能,并且可以让你的汽车寿命延续几年. SQL Server 2005把维护计划以SSIS包的方式予以实现,它为任务的定制提供更大的

在SQL Server 2005中实现网页传递变量

前言: 这个例子非常的简单,写这个例子的目的主要还是想让大家熟悉SQL 2005 CRL 函数的一个创建过程. 在网页传递变量,一般先编码,然后解码即可.在.net 实现这个功能,非常简单直接调用(微软已经处理完成了), 它的编码: String Message = Server.UrlEncode("欢迎学习ASP.NET!"); Response.Redirect("WebForm2.aspx?Msg=" + Message); 它的解码: Label1.Tex

SQL Server 2005新特性

一.企业级数据管理 在当今的互联世界中,数据和管理数据的系统必须始终为用户可用且能够确保安全,有了SQL Server 2005,组织内的用户和IT专家将从减少应用程序宕机时间.提高可伸缩性及性能.更紧密的安全控制中获益.SQL Server 2005 也包括了很多新的和改进的功能来帮助企业的IT团队更有效率的工作.SQL Server 2005 包括了几个在企业级数据管理中关键的增强: 易管理 可用性 可伸缩性 安全性 1.易管理 SQL Server 2005 能够更为简单的部署.管理和优化

SQL Server 2005中如何使用分析服务执行DDL任务

问题: 我们期待在我们的SQL Server分析服务服务器中自动执行任务.请问您能给我们讲解怎样在SSIS中使用分析服务执行DDL任务(Analysis Services Execute DDL Task)的细节吗? 专家解答: 分析服务执行DDL任务(Analysis Services Execute DDL Task)是一个很有用的工具,它可以让你用一个SQL Server分析服务实例做任何事情.例如,你可以备份一个数据库,处理一个数据分析立方体,创建一个分区.利用XML分析(XMLA)来执

使用 SQL Server 2005中的 CLR 集成

本文描述了数据库应用程序开发人员和架构师如何利用 SQL Server 2005 中的 CLR 集成功能.本文对基于 CLR 的编程方式与 SQL Server 中支持的现有编程模型(如 TransacT-SQL 和扩展存储过程)进行了比较,并且强调了各自相对的优缺点.还提供了一组选择合适的编程替代方法的高级指导,以及一些示例和代码示例. 一.简介 Microsoft 通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显

Microsoft SQL Server 2005 中的 XML 支持(1)

本文探讨 SQL Server 2005 中内置的 XML 支持.描述了这种支持如何与 .NET 框架 V2.0 和本机代码(例如 OLEDB 和 SQLXML)均支持的客户端编程相集成. 一.简介 可扩展标记语言 (XML) 作为一种与平台无关的数据表示形式已被广泛采用.它对于在松散耦合且完全不同的系统,以及各种企业到企业 (B2B) 应用和工作流范畴内交换信息是很有用的.数据交换已成为 XML 技术的主要驱动力之一.. XML 在企业应用程序中的使用正日益广泛,它主要用于对半结构化和非结构化

SQL Server 2005 中的批编译、重新编译和计划缓存问题(4)

下面,考虑以下 T-SQL 代码段:-- dbo.someTable will be used to populate a temp table-- subsequently.create table dbo.someTable (a int not null, b int not null)godeclare @i intset @i = 1while (@i <= 2000)begin insert into dbo.someTable values (@i, @i+5) set @i =