`
feiliboos
  • 浏览: 672670 次
文章分类
社区版块
存档分类
最新评论

Integration Services 学习(3)

 
阅读更多

容器是Integration Services 包中非常重要的一部分功能,它可以对控制流中的任务进行直观的划分与组织,使包的结构简明扼要、易于管理、易于维护。
  在Integration Services 中,主要有以下三种类型的容器: 序列容器(SequenceContainers)、For 循环、Foreach 循环。下面我们将一一介绍这三种容器的使用方法。
  (一)、序列容器(SequenceContainers)。
  序列容器是一种十分简单,但使用非常广泛的容器,它可以对控制流的任务流组件进行结构化处理,把一些业务相关的任务组件,放到一个序列容器中,使整个包看起来更加整洁、美观,就如同我们家里的书柜、衣柜似的,把不同种类的东西整理在里面,收藏起来,既美观,又易于取用。
  比如,在一个Integration Sevices包中,包含有财务数据、业务数据。整个包中的任务组件会非常多,如果不对它们进行分组管理,整个包看起来就会比较乱,非常难于管理与维护。相反如果我们将处理财务数据的任务,放入一个序列容器中,将处理业务数据的任务放入另一个序列容器,整个包看起来,就会一目了然,哪些任务是处理财务数据,哪些任务是处理业务数据了,非常清楚。如图:

  不仅如此,如果点击右上角象箭头一样的符号,还可才把这些容器折叠起来,整个包就更加清楚明了,一目了然了。如图:

  

 (二)For 循环。

  For 循环组件,类似于编程语言中的For 循环,当人们需要反复执行同一个工作任务或者一系列工作任务的时候,就需要用到For 循环,它既可以用于有限次循环,也可以用于“无限次循环”,比如我们监控包的运行状况,当错误数据>=5时,包停止运行,并通知管理员;又如监控某个文件夹是否有新文件产生、监控网络链接是否正常、监控服务器的各项指标(Cpu、内存)是否正常等,论询特定事件是否发生,这就可以设置为无限次循环。

  For 循环的使用非常简单,它主要有三个表达式,分别控制循环的执行和终止,如图:

  按照如图所示,完成表达式的值,For 循环就算完成了(@ErrorCount 是用户自定义变量,需要按照上一课的内容,先定义变量,此处才可以使用)。然后再将需要重复执行的任务,拖入For 循环容器中就可以了。

  (三)Foreach 循环。

  在.net 编程语言中,有一个循环也叫做Foreach ,从语义来讲,这两种循环如出一彻,没有什么差异。在Integration Services 中,Foreach 循环是最重要的一种循环,也是使用最频繁的一种循环,常用于对一个集合对象中的每一个元素,都要进行处理的场景。比如枚举某一个文件夹下的所有文件,枚举一个DataTable 中的某一条记录、枚举一颗树(tree )下的每个结点(Node)等。下面我们将Foreach 最常用的两种类型:Foreach 文件枚举器、Foreach ADO 枚举进行简单的说明。

  Foreach 文件枚举器。

  通常情况下,我们需要循环处理某一文件夹下的每一个文件,这时就需要用到Foreach 文件枚举器了,比如前面我们说到IISLOG的导入,IisLog 文件很多,每天都会产生很多个这样的文件,如果靠手工一个一个地处理,将很不现实,工作量非常大,如果我们用Foreach 文件枚举器,就会非常简单。如图,打开Foreach 循环编辑器:

  Enumerator:Foreach 枚举类型。在Foreach循环中,有很多种枚举类型,每一种枚举类型,就代表着一种使用场景,它们的使用方法也各不相同。每一种枚举类型的意义及使用方法,请参考官方文档:http://technet.microsoft.com/zh-cn/library/ms187670(SQL.90).aspx 这里有非常详细的说明。
  我们选择“Foreach 文件枚举器”,然后在枚举器配置项中,输入文件夹的位置(注意这里是文件夹的位置,而不是文件的位置),输入文件名通配符(如*.log

*.txt 等),其它按照默认设置就可以了,如果需要遍历文件夹下的子目录,请勾选“遍历子文件夹”选项。

  下一步,选择“变量映射”,如图:

  点击“确定”,回到控制流开发面板。

  最后,在“连接管理器”中,找到映射log 文件的平面文件连接(IisLog),设置属性Expressions 的ConnectionString =User::LogFile。

  Foreach 文件枚举器就算完成了,F5就可以达到你你想要的效果了。结果如下:

  其中的“文件系统任务”是将处理完成的文件复份到另外一个文件夹,或者删除,以免重复执行。

  Foreach ADO 枚举器:枚举表或者表中每一行记录。

  这种枚举器在日常开发过程中,也用得非常普遍,类似于TSQL中的游标,先Select 出一批数据,存储在ADO记录集中,然后再一行一行地处理。

  假设有一个商业公司,它在全国或者全市的各个地方,都有连锁专卖店,每个专卖店都是通过POS进行销售和收银,为了保证前端销售快速稳定地运行,POS系统一般都采用C/S模式,数据与系统程序都存储在本地。集团公司的中高层主管为了随时了解各专卖店销售经营情况,就需要定时或者不定时地将专卖店的数据同步到总部数据中心。

  如果我们对每个专卖店DB,都建立一个链接,再建立一个对应的同步任务,随着专卖店的增加,同步任务也随之增加,到最后,功能类似的同步任务就会越来越多,而且每增加一个专卖店,ETL包都要增加一个任务,管理起来,将非常困难。

  根据我的经验是,在总部数据中心建立一张表,专门配置各专卖店DB的链接凭证(ConnectionString), 在同步时,先Select 出各DB的ConnectionString ,然后再动态创建DB连接。这样一来,程序就小巧、稳定多了。下面我们来看看如何实现这一需求:

  首先,定义两个变量,一个于用存储ConnectionString(字符型);一个用于存储ADO 记录 集(Object 型)。如图:

  然后在控制流中增加一个SQL任务,配置如下:


  Connection:选择“数据中心”的链接器。

  SQLStatement: 输入如下SQL,以取出所有配置记录。

代码
SELECT 'Data Source=' + strDBServerIP + ';User ID=' + strDBUserID +
';Initial Catalog=HumanResource;Provider=SQLNCLI10;Auto Translate=True;' AS
ConnectionString
FROM DbConfig
  ResultSet :选择“完整结果集”。

  然后切换到“结果集”,配置结果集选项,如图:(注意:User::DataSet 一定要是Object 类型的变量,其它变量都不可用)

  点击“确定”,就完成了各DB的连接配置,下面就看Foreach ADO 循环如何来应用这个结果集了。

  找开Foreach 循环编辑器,在Enumerator 中选择“Foreach Ado 枚举”,如图:

  请注意如图所示的每一个选项,如果选错,都可能达不到你想要的效果。

  变量映射,如图:

   最后一步,就是将变量映射到OLE DB 的连接上了,从连接管理器中,选择 DB连接,右击配置Expressions属性的ConnectionString =User::ConnectionString ,如图:

   整个Foreach ADO 循环完成了,F5一切如你所愿,绿油油的一遍就会呈现在你的眼前。

  常用的三种容器就介绍完了,当然还有一些其它容器,比如一个包,是一个容器,一个分组(在控制流中选择一批任务,右键菜单“分组”,就可以将这批任务放在一个Group 内)也是一个容器,但是这些容器都非常简单,就此略过,不做详细说明。

  在Inegration Services 中,容器还可以嵌套,每个容器都可以相互嵌套,它们可以有各自的作用域,有各自的命名空间,如果我们善加利用,将会为Integration Services 的结构化开发,提供很多的方便。

分享到:
评论

相关推荐

    Integration Services in SQL Server 2005

    **SQL Server 2005 Integration Services (SSIS)** SQL Server 2005 Integration Services, 或简称 SSIS,是微软提供的一款强大的数据集成工具,用于处理数据抽取、转换和加载(ETL)任务。它在数据仓库环境中扮演...

    Hands-On Microsoft SQL Server 2008 Integration Services

    一本不错的SQL Server Integration Services学习用书。要下载的趁热! 注:英文版

    Integration Services教程

    数据仓库课程资源,帮助学习如何运用Integration Service

    Microsoft SQL Server 2008 Integration Services Problem, Design, Solution.pdf

    ssis 这个是 学习的重点 不看都不行

    Apress.Pro.SQL.Server.2005.Integration.Services.Dec.2007.pdf

    Apress.Pro.SQL.Server.2005.Integration.Services ,学习SSIS的好书

    SQL_Server_2008_Integration_Services_概述_白皮书.doc

    SQL Server 2008 Integration Services (SSIS) 是微软提供的一个强大且灵活的数据集成解决方案,主要用于处理数据的提取、转换和加载(ETL)任务。这个组件是SQL Server 2008的重要组成部分,旨在帮助企业整合来自...

    SQLServer2005数据库开发及实现 精品资料.pptx

    3. **Integration Services运行时** - 处理包执行的环境。 4. **Integration Services数据流** - 包含数据流任务,是处理和转换数据的核心组件。 **集成服务的工具** 设计和管理SSIS包的主要工具有: 1. **Business...

    [SQL.Server.2005一体化指导手册].Microsoft.SQL.Server.2005.Integration.Services.Step.by.Step part1

    一本学习SQL Server 2005解决方案的好书 共6个压缩包

    SSIS入门介绍及示例.docx

    SSIS(SQL Server Integration Services)是 Microsoft SQL Server 的一部分,用于生成高性能数据集成解决方案的平台。SSIS 具有可视化环境,在熟悉了 SSIS 的可视化操作后,几乎所有的 ETL 操作都能通过简单的拖拽...

    SSIS教程(SQL Server 2005)

    3. 键入命令:dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteProcess Sample\ExecuteProcess\UsingExecuteProcess.dtsx"。 4. 按回车键。 也可以在 ...

    SSIS 微软网站教程.pdf

    SQL Server Integration Services ,简称SSIS,本资源是根据微软官网学习时做的笔记,可以为需要学习SSIS的小白提供帮助

    SAP PO/PI教程 Process Orchestration The Comprehensive Guide

    1.1.1 SAP Process Integration 1.1.2 SAP Composition Environment 1.1.3 SAP Process Orchestration 1.1.4 SAP Process Orchestration 7.5 Highlights 1.2 SAP Process Orchestration Components 1.2.1 SAP ...

    一步一步学习SQL Server BI.pdf

    在ETL过程中,我们使用了SQL Server Integration Services(SSIS)来实现数据抽取、加载和转换。首先,我们来新建一个Integration Services项目。接着,新建一个ImportDimGamePackage.dtsx的SSIS包。拖放一个数据流...

    webservice学习笔记doc文档

    Web Service的核心技术包括SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)和UDDI(Universal Description, Discovery, and Integration)。这些技术共同构成了Web Service的...

    TSQL 学习资料

    这些服务包括SQL Server本身、Active Directory助手、Browser服务、Integration Services、Agent服务、Reporting Services、VSS Writer和Full-Text Search等,它们各自承担特定的任务,为数据库系统提供支持。...

    一步一步学习SQL_Server_BI

    使用 SQL Server Integration Services (SSIS) 创建 ETL 包来处理数据。 1. **新建 SSIS 项目**:创建 ImportDimGamePackage 和 ImportFactGameTradeDataPackage。 2. **数据流任务**:在控制流面板上添加数据流...

    大数据工程师简历模板参考

    数据仓库和ETL工具(如Talend, Informatica, SQL Server Integration Services等) 数据分析和可视化工具(如Tableau, PowerBI, QlikView等) 机器学习和人工智能框架(如TensorFlow, PyTorch等) 云服务平台(如AWS...

    SQL Server Business Intelligence on Oracle.ppt

    例如,SQL Server Integration Services支持从Oracle数据库提取数据,SQL Server Analysis Services可以构建基于Oracle数据的OLAP立方体,而SQL Server Reporting Services则可以生成基于这些数据的报告。...

    webService的学习资料

    3. **UDDI (Universal Description, Discovery, and Integration)**: UDDI是一种黄页服务,允许服务发布和发现。服务提供商可以在UDDI注册他们的服务,使得消费者能通过查询UDDI找到所需的服务。 4. **JAX-WS (Java...

Global site tag (gtag.js) - Google Analytics