微软 BI 系列随笔 - SSIS 2012 基础 - SSIS 基础知识


SSIS 介绍

SSIS - SQL Server Integration Services 是用于实现企业级数据集成和数据转换解决方案的平台。 使用 Integration Services 可解决复杂的业务问题,具体表现为:复制或下载文件,发送电子邮件以响应事件,更新数据仓库,清除和挖掘数据以及管理 SQL Server 对象和数据。 这些包可以独立使用,也可以与其他包一起使用以满足复杂的业务需求。Integration Services 可以提取和转换来自多种源(如 XML 数据文件、平面文件和关系数据源)的数据,然后将这些数据加载到一个或多个目标。

Integration Services 包含一组丰富的内置任务和转换、用于构造包的工具以及用于运行和管理包的 Integration Services 服务。 可以使用 Integration Services 图形工具来创建解决方案,而无需编写一行代码;也可以对各种 Integration Services 对象模型进行编程,通过编程方式创建包并编写自定义任务以及其他包对象的代码。

SSIS 的基本概念

包 - Package

包是一个有组织的集合,其中可包括连接(Connection Managers)、控制流元素(Control Flow)、数据流元素(Data Flow)、事件处理程序(Event Handlers)、变量(Variables)、参数和配置(Parameters and Configurations). 包是可被检索、执行和保存的工作单元。包可以部署到 SSIS 服务器或者文件系统执行。

以下关系图显示了一个简单包,其中包含一个带有数据流任务的控制流,而数据流任务中又包含数据流。

连接管理器 - Connection Managers

SSIS提供项目级别的连接管理器和包级别的连接管理器。

项目级别的连接管理器可以在各个包之间共享。对于使用相同配置的连接来说,只需要在项目级别配置一次,就可以在多个包之间使用了。

包级别的连接管理器只能在包级别使用。同一个包内部的不同的任务和数据流任务之间可以共享同一个连接。在包级别的连接管理器可以看到项目级别的连接管理器。

控制流 - Control Flow

控制流是一个包含各种任务(Task)的容器。这些任务之间可以通过各种优先级约束(成功,失败,完成)链接以实现顺序序执行。任务之间也可以不使用任何优先级约束,这样的任务对其他的任务没有依赖或者不被别的任务依赖,他们可以平行执行。常见的任务有Execute SQL Task和Data Flow Task。

控制流中可以使用容器(Containers)来包含和组织任务。常见的容器有For Loop容器,Foreach容器 和 Sequence容器。

下图包含了一个顺序执行的任务和一个与之平行任务。

数据流 - Data Flow

数据流是以数据为导向的数据流任务(Data Flow Task)的具体实现。数据流通常包含数据源(Source)、转换(Transform)和目的地(Destination)。在一个数据流中数据从数据源采集,经过转换(矫正、分离、合并)并最终到达目的地。虽然所有的数据都是按照这个过程(依赖于设计)处理,但是整个过程中每条数据之间是并行执行的关系。比如第一条数据已经在转换了,第二条数据才刚刚被采集到。

下图说明了一个从不同的数据源采集数据并处理到不同的目的地的数据流。

参数 - Parameters

SSIS中参数分为项目(Project)参数和包(Package)参数。

项目参数可用于向项目中的一个或多个包提供项目接收的任何外部输入。通常定义一些基本的数据,比如数据库连接字符串,服务器连接字符串。

包参数可以用于给一个包提供接收的外部输入。通常定义一些包级别特定的数据,比如包处理的筛选条件,数据源所在的文件夹等。

使用参数可以实现快速的执行和部署包或者整个项目。但是如果是要部署单个的包,则尽量避免使用参数而应该使用配置。

下图列出了一些项目级别的参数。

事件处理程序 - Event Handlers

在运行时,可执行文件(包以及 Foreach 循环容器、For 循环容器、序列容器和任务宿主容器)会引发事件。 例如,错误发生时会引发 OnError 事件。 可以为这些事件创建自定义事件处理程序,以扩展包的功能并使包在运行时更容易管理。 事件处理程序可以执行诸如下列任务:

当包或任务运行完成时清除临时数据存储。
在包运行前检索系统信息,以便评估资源可用性。
在引用表中的查找失败时刷新表中的数据。
当发生错误或警告时,或者当任务失败时,发送电子邮件。
如果事件没有事件处理程序,则将该事件提升到包中容器层次结构中的上一级容器。 如果此容器具有事件处理程序,则该事件处理程序当事件发生时运行。 如果没有,则将该事件提升到容器层次结构中的上一级容器。

下图列出了所有可用的事件处理程序。

变量 - Variables

变量是在包内部使用的作为控制或者传递的信息。每个变量都有自己的作用域(Scope),父容器级别的变量可以被子容器使用,子容器级别的变量对父容器不可见。

SSIS中的变量分为系统变量和用户变量。系统变量是系统内置的,对用户来说是只读的。用户定义变量由包开发人员定义,可以使用参数、配置信息、表达式和常量来赋值。通过设置用户变量的只读属性(ReadOnly)让变量不可修改。

日志 - Loggin

SSIS中通过配置包的日志,可以详细记录包以及内部任务的运行时信息。可以为包内的任何可执行文件()任务记录日志,日志的内容包括各种事件及时间的属性。可以为一个包定义多个日志类型。例如可以为同一个包指定Text Files和SQL Server级别的日志记录,一旦SQL Server出现问题,Text Files记录的日志可以很好的帮助我们诊断出错信息。使用SQL Server类型的日志记录会在数据库的系统表中创建一张sysssislog的表。该表记录了包执行的ID,任务的执行ID,起止时间及状态信息。

包配置 - Package Configurations

包配置在SSIS 2012之前的版本中非常重要,在SSIS 2012的版本中使用包级别部署的时候也非常有用(包配置可用于包部署模型。 对于项目部署模型,参数用于代替配置。)

包配置具有下列优点:

  • 使用配置可以更轻松地将包从开发环境转移到生产环境中。 例如,配置可以更新源文件的路径,或者更改数据库或服务器的名称。
  • 将包部署到多台不同的服务器时,配置非常有用。 例如,用于每个已部署包的配置中的变量可以包含不同的磁盘空间,并且如果可用磁盘空间不满足此值,包将不会运行。
  • 配置可以使包更加灵活。 例如,配置可以更新在属性表达式中使用的变量的值。

Integration Services 支持几种不同的存储包配置(例如 XML 文件、SQL Server 数据库中的表以及环境变量和包变量)的方法。

每个配置都是一个属性/值对。 XML 配置文件和 SQL Server 配置类型可以包括多个配置。
在创建用于安装包的包部署实用工具时将会包括这些配置。 在安装包时,可以在安装包的过程中更新配置。

Integration Services 提供了直接配置和间接配置。 如果直接指定配置,Integration Services 会在配置项和包对象属性之间创建直接链接。 如果源的位置不更改,则直接配置是较好的选择。 间接配置使用环境变量。 配置不直接指定配置设置,而是指向环境变量,环境变量又包含配置值。 如果对于包的每个部署,配置的位置都可以更改,则使用间接配置是较好的选择。例如,在数据库中直接指定包级别的配置,而在环境变量中(或者XML、参数)中简介指定包级别配置所在的数据库。SSIS在执行时,首先加载环境变量(直接配置),通过直接配置找到包级别的配置信息(间接配置)并加载运行。

包浏览器 - Package Explorer

包浏览器包含了整个包里面的所有内容,并且以折叠数的方式展现,通过包浏览器可以快速的找到并定位包级别的任何元素(可执行文件、条件表达式、参数、事件处理程序、变量、连接管理器以及日志)。

总结

本文介绍了微软SSIS的基本概念,希望能够帮助初学SSIS的开发者更好的理解SSIS。

//
//
//

SSIS 基础知识的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

随机推荐

  1. html5常见问题

    H5项目常见问题汇总及解决方案 2016-12-21 FrontEndZQ JavaScript 转自 https://github.com/FrontEndZQ/HTML5-FAQ H5项目常见问题 ...

  2. Android权限声明

    1.网络 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/ > < ...

  3. LR参数化后取值规则小记

    对参数化的取值,只有一个用户的情况能分清,但是多用户多迭代就搞不懂,特意使用Parameter List中自带的参数化模拟器Simulate Parameter进行简单的实验,3条数据 + 4个用户 ...

  4. IOS基础库

    iOS 开发者中心                                             https://developer.apple.com/devcenter/ios/inde ...

  5. git add 命令添加所有改动内容

    git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .来一次添加所有改变的文件. 注意 -A 选项后面还有一个句点. git add -A表示添加所有内容 ...

  6. Windows 下java环境变量的配置(Windows7 ,8,8.1,10)

    Windows 下java环境变量的配置 在“系统”面板的左上角选择“高级系统设置”,在弹出的系统属性中选择”高级“项,然后点击右下角的“环境变量(N)...”,就此进入JAVA环境变量的配置. 如果 ...

  7. enmo_day_09

    1. 数据库 select name from v$database; : 数据库名称 select db_unique_name from v$database; : 数据库唯一名称 select ...

  8. 【转】局域网内访问VS2012 调试的IIS Express web服务器

    1.修改发布项目的web属性 2.在我的文档中打开IISExpress\config\applicationhost.config 加上下面的一句 3.重启调试 转自:http://blog.chin ...

  9. C# winform中的datagridview控件标头加入checkbox,实现全选功能。

    /// <summary> /// 给DataGridView添加全选 /// </summary> public class AddCheckBoxToDataGridVie ...

  10. 搭建Tomcat6源代码阅读环境

    目标:使用MyEclipse8.5阅读Tomcat6源码. 第一步:在MyEclipse8.5中集成SVN插件. 第二步:从地址http://svn.apache.org/repos/asf/tomc ...