Integration Services 是用于生成高性能数据集成和工作流解决方案(包括针对数据仓库的提取、转换和加载 (ETL) 操作)的平台。
Integration Services 包括生成并调试包的图形工具和向导;执行如 FTP 操作、SQL 语句执行和电子邮件消息传递等工作流功能的任务;用于提取和加载数据的数据源和目标;用于清理、聚合、合并和复制数据的转换;管理服务,即用于管理 Integration Services 包的 Integration Services 服务;以及用于对 Integration Services 对象模型编程的应用程序接口 (API)。
1.安装完SQL Server 2008 后,在“Microsoft SQL Server 2008” 程序目录下有一个 “SQL Server Business Intelligence Development Studio” 启动。
2.启动“SQL Server Business Intelligence Development Studio”后,在“New Project” 弹出窗口中左边的Project types中选择“Business Intelligence Projects” 在右边的Templates 中选择Integration Services Project .
3.在新建的Integration Services Project工程中我们发现在Solution Explorer中的目录结构如下,我们来认识一下:
Data Sources: 数据源,包含可供多个包引用的项目级数据源。
Data Sources Views: 数据源视图,包含在数据源上构建,并可供源,转换,目标引用的数据源视图。
SSIS Packages: SSIS 包。包是一个有组织的集合,其中可包括连接、控制流元素、数据流元素、事件处理程序、变量和配置,您可使用 SQL Server Integration Services 提供的图形设计工具或以编程生成方式将这些对象组合到包中。然后,您可将完成的包保存到 SQL Server、SSIS 包存储区或文件系统中。包是可被检索、执行和保存的工作单元。首次创建包后,包是一个空对象,不能实现任何功能。若要向包添加功能,可向包添加一个控制流,还可选择添加一个或多个数据流。以下关系图显示了一个简单包,其中包含一个带有数据流任务的控制流,而数据流任务中又包含数据流。
Miscellaneous:杂项,包含除了源文件、数据源视图文件或包文件以外的文件。
4.从3 的SSIS Packages的认识过程中,我们发现包里主要是控制流,控制流是包含一个或多个在包运行时执行的任务和容器。若要控制包控制流中的任务或容器的运行顺序或定义运行条件,可使用优先约束来连接包中的任务和容器。还可以将任务和容器分组为子集,并在包控制流中将其作为一个单元重复运行。下图就是控制流的截图。下图左边所示为“控制流任务” 和“维护计划任务”。我们在用Integration Services开始ETL的过程都将从一个控制流任务开始,在控制流任务中进行数据流操作。
控制流任务:任务是一些控制流元素,它定义包控制流中执行的工作单元。SQL Server Integration Services 包由一个或多个任务组成。如果包中包含多个任务,则它们将按照优先约束在控制流中进行连接和排序。
维护计划任务:SQL Server Integration Services 中包含了一组执行数据库维护功能的任务。这些任务通常用于数据库维护计划中,但也可以包含在 SSIS 包中。
5.从主工作区上的Table菜单Control Flow(控制流设计窗口) 切换到 Data Flow(数据流设计窗口)。
SQL Server Integration Services 提供三种不同类型的数据流组件:源、转换和目标。源从数据存储区(如关系数据库中的表和视图、文件以及 Analysis Services 数据库)中提取数据。转换修改、汇总和清除数据。目标将数据加载到数据存储区,或创建内存中的数据集。此外,Integration Services 还提供将一个组件的输出连接到另一个组件的输入的路径。路径定义组件的序列,并允许您向数据流添加批注或查看列的源。以下关系图显示的数据流具有一个源、带有一个输入和一个输出的转换以及一个目标。除了输入列、输出列和外部列之外,该关系图还包含输入、输出和错误输出。
源
在 Integration Services 中,源是使数据流中的其他组件可以访问来自不同外部数据源的数据的数据流组件。
数据流的源通常具有一个常规输出。常规输出包含输出列,这些输出列是由源添加到数据流中的。
常规输出引用外部列。外部列是源中的列。例如 AdventureWorks 数据库的 Product 表中的 MadeFlag 列是可以添加常规输出的外部列。外部列的元数据包含诸如源列的名称、数据类型和长度等信息。
源的错误输出包含与常规输出相同的列,此外,还包括提供有关错误信息的两个额外列。Integration Services 对象模型不限制源可拥有的常规输出和错误输出的数目。除脚本组件外,Integration Services 包含的大多数源都具有一个常规输出,许多源具有一个错误输出。对于自定义源,可以通过编码方式实现多个常规输出和错误输出。
所有输出列都可用作数据流中下一个数据流组件的输入列。
转换
转换的功能非常广泛。转换可以执行如更新、汇总、清除、合并和分发数据等任务。
转换的输入和输出定义传入和传出数据的列。根据对数据执行的操作,一些转换具有一个输入和多个输出,而其他转换具有多个输入和一个输出。转换还可以包含错误输出,它们提供关于发生的错误以及失败的数据的信息,例如,无法转换为整数类型的字符串数据。Integration Services 对象模型不限制转换可以包含的输入、常规输出和错误输出的数目。您可以创建自定义转换,这些转换可实现多个输入、常规输出和错误输出的任意组合。
转换的输入被定义为一个或多个输入列。某些 Integration Services 转换还可以引用外部列作为输入。例如 OLE DB 命令转换的输入包含外部列。输出列是转换添加到数据流的列。常规输出和错误输出都包含输出列。这些输出列转而充当数据流中下一个组件(其他转换或目标)的输入列。
目标
目标是将数据流中的数据写入特定数据存储区或创建内存中的数据集的数据流组件。
一个 Integration Services 目标必须具有至少一个输入。输入包含来自其他数据流组件的输入列。输入列映射到目标中的列。
许多目标还具有一个错误输出。目标的错误输出包含输出列,该输出列通常包含向目标数据存储区写入数据时发生的错误信息。错误的发生有许多不同的原因。例如,列可能包含空值,而目标列不能设置为空值。
Integration Services 对象模型不限制目标可包含的常规输入和错误输出的数目,因此,您可以创建具有多个输入和多个错误输出的自定义目标。
今天主要是熟悉了一下我们的工作环境和相关的知识概念。下一次我们将开始做一个简单的ETL工程。