变量和表达式
变量,作为程序员的我们,是一个多么熟悉的概念,从开始学习编程的第一天起,就要了解什么是变量?如何定义一个变量?变量的使用范围等。现在还有必要在这里大费口舌来讨论“变量”吗?不错,我们今天谈的变量,也脱离不了这个范畴:如何定义一个变量?如何使用变量?变量的使用范围等。但是在ETL的发展过程中,从以前Sql Server 97、Sql Server 2000的DTS到后来的Sql server Integration Services 2005 ,再到现在的Sql Server Integration Services 2008,变量也发生了巨大的变化,其作用也变得越来越重要了。SSIS 包中各组件原本是想互独立,彼此分割的,就需要通过变量来进行信息传递与交流。就象生活在这座城市中的我们,回家同居一小区,出门同乘一班车,但是老死不相往来,每日相逢不相识,彼此从不沟通,从不交流。现在突然来了一位美丽的使者(Variable),挨门挨户地传递信息,把大家凝聚在一起,彼此的沟通和交流多起来了,从此这个小区就变得热闹起来,相互间和谐多了。
Integration Services 中的变量,同其它编程语言中的变量非常相似----它们都是用于临时存储数据。但是也有一些区别:Integration Services 变量,它还是一个对象,有自已的属性(property),有自已的响应事件。下面我们就看看如何定义变量。
打开Integration Services Solution ,打开菜单SSIS(S)---变量(S),就会弹出如图所示的窗口。
从这个窗口中,我们可以明白变量以下几方面的情况:
(1)、变量的分类,在Integration Services 中,变量有两种类型:系统变量和用户自定义变量。其中系统变量,比如:TaskID,TaskName,CreateName,CreateDate等,提供包运行时的一些基本属性,可供包中的组件或者代码使用。这些变量一般是只读的,在运行的过程中,根据包的运行环境默认生成,不可以修改。而自定义变量呢?两种情况都可以定义了:只读、读写。
(2)、变量的作用域。有基于包的全局变量,也有基于某一组件的局部变量。这与以前的DTS有较大的差异,以前DTS包中的变量,都是基于包的全局变量。
(3)、变量的名称、变量的数据类型、默认值等与其它编程语言没有什么差异,在此就不多说了。
(4)、Raise Change Event 。这是Integration Services 的一个新属性。它是一个Bool 值,如果其值为True,每当变量的值发生改变,VariableValueChangedEvent 将会响应,否则,这个事件将不会响应。(SSIS中的事件,以后会讲到,这里暂不深入).
除了上面提到的这些属性外,变量还有一个重要的属性--变量的可继承性。前面提到变量有全局变量与局部变量,而局部变量是针对某一个组件可见的变量,但是Integration Services 中的组件是分层的,即有祖先级组件,也有子孙级组件,那么子孙组件就会继承祖先组件的变量,可以引用,可以修改,也可以触发变量VariableValueChangedEvent 事件。如图:
二、表达式。
前面讲述了表变量的定义、变量的命名空间、变量的作用范围等,但是却没有提及如何使用变量。这就是我们这一节要介绍的内容--表达式。
“在SSIS解决方案中,对于表达式的强大功能怎么表述都不过分。在SSIS中,我最喜欢的功能就是表达式”--Jamie Thomson
正如Jamie 所言,表达式的功能在SSIS简直是太强大了,组件的属性、变量、优先级约束、For/Foreach循环容器等,都可以用表达式进行设置。从而使用包变得更加强大、灵活。下面我们将讲一讲常见的几种表达式的应用。
(一)、属性表达式。
在Integration Services 中,大多数组件都有Expressions 这个属性,如图:
Expressions 就是为组件定义表达式的属性,点击“...”按钮,打开“属性表达式编辑器”对话框,如图:
我们可以简单地比较一下,一个文本文件连接对象,基本上大多数属性都可以通过表达式来定义,这就是它的强大的之处。表达式的定义,也非常方便,有一个功能全面的“表达式生成器”窗口,如图:
这个窗口有四个区域,左上角为“变量”区域,包含了全局变量和该对象可见的局部变量。右上角为“函数”和“运算符”区域,中间为表达式编辑区域,下面为表达式结果显示区,每当一个表达式定义完成,我们为了验证表达式定义是否正确,点击“计算表达式”按钮,就可以模拟计算出表达式的结果。请大家别小看了这个按钮,在Debug 表达式时,非常有用哦。
(二)、变量表达式。
变量表达式的定义同属性表达式的定义完全相同,选择变量的“Expressions ”属性,打开属性编辑器,进行编辑即可。
(三)、优先约束表达式。
一般在控制流中有多个任务组件,比如有Script 任务,有数据流任务,有SQL脚本任务等,我们有时并不需要这些任务全部都要执行,而是需要根据前面一个任务的执行结果,动态地决定后面的任务是否执行,这就需要用到优先约束表达式。如图:
优先约束控制着包的工作流,它会判断包的约束是否满足,然后再按照约束条件来选择包是继续运行,还是停止运行。在以前的DTS中,优先约束仅限于前面的任务是“成功”、“失败”、“完成”这三种状态,而现在除了以上三种状态外,还多了一个“表达式和约束”,即我们可以通过定义表达式来定义约束,比如上图所示,如果我们需要定义当错误数量超过5次以后,包才失败,停止运行。这就要用到表达式约束了。
(四)、循环容。
“For 循环”是一个容器组件,它可以让某些组件在此容器中,重复运行指定的次数。在这个容器中,我们要定义初值、定义表达式、定义赋值语句,如图:
常用的表达式应用,就是以上这些了,当然还有其它一些类型的表达式定义,我们就不一一列举了,使用方法都大同小异,只要撑握了前面几种,这些定义也就一目了然了。
今天我们讲述了两个内容:变量和表达式,这两方面的内容,在SSIS包中扮演了非常重要的角色,只要我们充分、灵活地运用,它可以让包更有弹性,更灵活,更加有生命力。如果大家在以后的工作中遇到了,仔细琢磨琢磨,一定不会让你失望的。
分享到:
相关推荐
接下来,读者将学习如何安装SQL Server Integration Services(Lesson 2),以及安装示例数据库的方法(Lesson 3)。创建解决方案和项目(Lesson 4)是SSIS开发的基础,这部分内容会详细介绍如何在Visual Studio环境...
**SQL Server 2005 Integration Services (SSIS)** SQL Server 2005 Integration Services, 或简称 SSIS,是微软提供的一款强大的数据集成工具,用于处理数据抽取、转换和加载(ETL)任务。它在数据仓库环境中扮演...
《SQL SERVER 2005 INTEGRATION SERVICES专家教程》是一本深入探讨微软商务智能(Microsoft BI)领域中SQL Server 2005 Integration Services(SSIS)的专著。SSIS是微软提供的一个强大的数据集成和转换工具,用于...
《Wrox Professional Microsoft SQL Server 2008 Integration Services》是专为SQL Server 2008的Integration Services(简称SSIS)设计的一本专业指南。这本书深入探讨了这一强大的数据集成和转换工具,帮助读者...
总的来说,通过学习《Microsoft SQL Server 2005 Integration Services Step by Step》,无论是初学者还是有经验的数据库管理员,都能深入理解并熟练运用SSIS,提升在数据集成和ETL项目中的专业技能。
总的来说,《Microsoft SQL Server 2012 Integration Services: An Expert Cookbook》是SSIS学习者和专业人员的重要参考资料,它不仅提供理论知识,还通过大量实际案例和技巧,帮助读者快速提升在数据集成项目中的...
本书为读者提供了深入浅出的学习指南,旨在帮助读者掌握SQL Server 2005 Integration Services (SSIS) 的强大功能。对于那些希望摆脱复杂脚本逻辑编程任务的开发者来说,这本书将教授他们如何利用一个全功能语言来...
### Microsoft SQL Server 2008 Integration Services (SSIS):深入解析 #### 一、概述 Microsoft SQL Server 2008 Integration Services(简称 SSIS)是 SQL Server 2008 数据平台的重要组成部分之一,它提供了一...
"Integration Services Samples" 提供的实际示例可以作为学习SSIS的宝贵资源,你可以通过查看源代码、配置和执行这些示例,理解SSIS的工作原理,学习如何解决实际问题。 通过深入研究这些示例,你将能够掌握如何...
《Hands-On Microsoft SQL Server 2008 Integration Services》是一本专为想要深入了解SQL Server Integration Services(SSIS)的读者量身打造的实践指南。这本书深入浅出地讲解了如何利用SSIS进行数据集成、转换和...
总之,《Professional Microsoft SQL Server 2014 Integration Services》是一本全面而深入的SSIS教程,适合SQL Server管理员、数据仓库开发者、ETL工程师等专业人士学习参考,以提升他们在数据集成领域的专业技能。...
《Pro SQL Server 2012 Integration Services》是一本关于SQL Server ...通过《Pro SQL Server 2012 Integration Services》这本书的学习,开发者可以有效地利用SSIS解决数据集成问题,构建高效、稳定的数据处理系统。
《专业版SQL Sever 2005 Integration Services》是由知名技术出版社Wrox在2006年推出的一部深入解析SQL Server 2005 Integration Services(SSIS)的权威教程。SSIS是Microsoft SQL Server数据库平台中的一个关键...
### SQL Server Integration Services (SSIS) 初学者指南:使用 Visual Studio 2005 #### 一、SQL Server Integration Services (SSIS) 概述 SQL Server Integration Services(简称 SSIS)是 Microsoft 提供的一个...
SQL Server Integration Service (SSIS) 是一种用于数据集成、转换和加载的企业级工具,它在SQL Server 2005及后续版本中扮演着重要角色。SSIS 是Microsoft为构建Business Intelligence (BI) 应用提供的一部分,与...
根据提供的文件信息,本书《Professional Microsoft® SQL Server® 2012 Integration Services》主要介绍了Microsoft SQL Server 2012 Integration Services (SSIS) 的各个方面。以下是对本书各章节内容进行的详细...
### Microsoft® SQL Server™ 2008 Integration Services Unleashed #### 一、概览与启动 **标题与描述解读:** 本书《Microsoft® SQL Server™ 2008 Integration Services Unleashed》深入探讨了SQL Server ...