SSIS.docx
- 文档编号:26749518
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:15
- 大小:85.41KB
SSIS.docx
《SSIS.docx》由会员分享,可在线阅读,更多相关《SSIS.docx(15页珍藏版)》请在冰豆网上搜索。
SSIS
SSIS教程
一SSIS简介
1.SSIS定义:
SSIS是MicrosoftSQLServer2005IntegrationServices的简称,是生成高性能数据集成解决方案(包括数据仓库的提取、转换和加载(ETL)包)的平台。
2.SSIS的构成
IntegrationServices包括用于生成和调试包的图形工具和向导;用于执行工作流函数(如FTP操作)、执行SQL语句或发送电子邮件的任务;用于提取和加载数据的数据源和目标;用于清理、聚合、合并和复制数据的转换;用于管理IntegrationServices的管理服务IntegrationServices服务;以及用于对IntegrationServices对象模型编程的应用程序编程接口(API)。
3.SSIS的功能
SQLServer2005IntegrationServices(SSIS)提供一系列支持业务应用程序开发的内置任务、容器、转换和数据适配器。
您无需编写一行代码,就可以创建SSIS解决方案来使用ETL和商业智能解决复杂的业务问题,管理SQLServer数据库以及在SQLServer实例之间复制SQLServer对象。
4.特色
(1)可视化环境
熟悉了SSIS的可视化操作后,给你的感觉应该是震撼的,因为几乎你所能想得到的ETL操作都能通过简单托拽控件加以实现。
主要得益于SSIS强大ControlFlowFunction以及那个灵活多样并且高效的DataFlowTask(BulkInsertTask和ExecuteSQLTask等可以看成特殊的DataFlowTask)。
ControlFlow主要负责高层的逻辑拓扑,完成对各个DataFlowTask单元的串接,而DataFlowTask除了提供简单的SQL语句的执行,两个节点之间的数据传输外,还提供了Aggregation、DataConversion,Merge、Sort等操作,实现了面向多个源和目的端的复杂数据流的整合。
另外值得一提的是,SSIS同时也提供For/ForeachLoopContainer来完成类似for语句的循环操作。
(2)强大的参数设置功能
SSIS的另一个特色是的参数设置功能,这一点比DTS有了明显的进步。
连接参数,源与目的关联的表名或者SQL语句的条件子句,都可以通过参数来构建,甚至参数本身可以由其他参数动态赋值(通过Expression功能),这就给用户提供了非常广阔界面编程的空间,充分发挥你的想象力,就能够在可视化界面上实现复杂逻辑功能的ETL操作。
SSIS强大的参数设置功能在一定程度上简化了SSIS的Package(Package:
SSIS基本的可执行单位)程序调用。
5.典型用途
(1)合并来自异类数据存储区的数据
IntegrationServices可以连接到各种各样的数据源,包括单个包中的多个源。
包可以使用.NET和OLEDB访问接口连接到关系数据库,还可以使用ODBC驱动程序连接到多个早期数据库。
包还可以连接到平面文件、Excel文件和AnalysisServices项目。
IntegrationServices包含一些源组件,这些组件负责从包所连接的数据源中的平面文件、Excel电子表格、XML文档和关系数据库中的表及视图提取数据。
然后,通常要用IntegrationServices包含的转换功能对数据进行转换。
数据转换为兼容格式后,就可以将其物理合并到一个数据集中。
数据在合并成功且应用转换后,通常会被加载到一个或多个目标。
IntegrationServices包含将数据加载到平面文件、原始文件和关系数据库时所用的目标。
数据也可以加载到内存中的记录集中,供其他包元素访问。
(2)填充数据仓库和数据集市
数据仓库和数据集市中的数据通常会频繁更新,因此数据加载量通常会很大。
IntegrationServices包含一个可直接将数据从平面文件大容量加载到SQLServer表和视图中的任务,还包含一个目标组件,该组件可以在数据转换过程的最后一步将数据大容量加载到SQLServer数据库中。
清除数据和将数据标准化
(3)使管理功能和数据加载自动化
IntegrationServices包含专为以下目的设计的任务:
复制SQLServer数据库对象,例如表、视图和存储过程;复制SQLServer对象,例如数据库、登录和统计信息;使用Transact-SQL语句添加、更改和删除SQLServer对象和数据。
二SSIS基础
1.包概念
包(package)是SSIS项目中基本的部署和执行单元,是用于实现IntegrationServices功能以提取、转换和加载数据的对象。
可以通过使用BIDevelopmentStudio中的SSIS设计器来创建包。
也可以通过运行SQLServer导入和导出向导或IntegrationServices连接项目向导来创建包。
包包括连接、控制流元素、数据流元素、事件处理程序、变量和配置等。
以下关系图显示了一个简单包,其中包含一个带有数据流任务的控制流,而数据流任务中又包含数据流。
2.控制流
SQLServerIntegrationServices提供了三种不同类型的控制流元素:
提供包中结构的容器、提供功能的任务以及将可执行文件、容器和任务连接为已排序控制流的优先约束。
下面的关系图显示具有一个容器和六项任务的控制流:
(1)容器
容器为控制流中的任务提供包中结构和服务。
IntegrationServices包含下列容器类型,用于对任务分组以及实现重复的控制流:
♦Foreach循环容器枚举一个集合,并对该集合的每个成员重复其控制流。
♦For循环容器重复其控制流,直到指定表达式的计算结果为False为止。
♦序列容器使您可以在容器内定义控制流的子集,并将任务和容器作为一个单元来管理。
(2)任务
♦数据流任务定义并运行提取数据、应用转换和加载数据的数据流。
♦数据准备任务复制文件和目录,下载文件和数据,保存由Web方法返回的数据或使用XML文档。
♦工作流任务与其他进程通信以运行包或程序,在包之间发送和接收消息,发送电子邮件,读取WindowsManagementInstrumentation(WMI)数据或监视WMI事件。
♦SQLServer任务访问、复制、插入、删除或修改SQLServer对象和数据。
♦AnalysisServices任务创建、修改、删除或处理AnalysisServices对象。
♦脚本任务通过自定义脚本来扩展包的功能。
♦维护任务执行管理功能,如备份和收缩SQLServer数据库、重新生成和重新组织索引以及运行SQLServer代理作业。
(3)优先约束
优先约束将包中的可执行文件、容器和任务链接成控制流,并指定决定可执行文件是否运行的条件。
可执行文件可以是For循环容器、Foreach循环容器、序列容器、任务或事件处理程序。
事件处理程序也使用优先约束将其可执行文件链接为控制流。
3.数据流
数据流任务是SSIS中的一个核心任务,大多数ETL包中,都离不开数据流任务。
数据流任务包括三种不同类型的数据流组件:
源、转换、目标。
(1)源
源是使来自不同类型的数据源的数据可供数据流使用的数据流组件。
源具有一个常规输出,许多源还具有一个错误输出。
有三种类型的源:
♦在您安装IntegrationServices时安装程序安装的源。
ADONET源
使用来自.NETFramework数据访问接口的数据。
Excel源
提取Excel文件中的数据。
平面文件源
提取平面文件中的数据。
OLEDB源
使用来自OLEDB访问接口的数据。
原始文件源
提取文件中的原始数据。
脚本组件
使用脚本提取、转换或加载数据。
XML源
提取XML文件中的数据。
♦可从Microsoft网站下载的源。
源
说明
Oracle源
Oracle源是MicrosoftConnectorforOraclebyAttunity的源组件。
MicrosoftConnectorforOraclebyAttunity还包括连接管理器和目标。
SAPBI源
SAPBI源是MicrosoftConnectorforSAPBI的源组件。
MicrosoftConnectorforSAPBI还包括连接管理器和目标。
Teradata源
Teradata源是MicrosoftConnectorforTeradata的源组件。
MicrosoftConnectorforTeradata还包括连接管理器和目标。
♦在现有源没有满足您的需求时您创建的自定义源。
.
(2)转换
SQLServerIntegrationServices转换是包的数据流中对数据进行聚合、合并、分发和修改的组件。
转换还可以执行查找操作并生成样本数据集。
♦商业智能转换
♦行转换
♦行集转换
♦拆分和联接转换
♦审核转换
(3)目标
目标是将数据流中的数据加载到不同类型的数据源或创建内存中数据集的数据流组件。
目标具有一个输入和一个错误输出。
目标有三种类型:
♦在您安装IntegrationServices时安装程序安装的目标。
目标
说明
ADONET目标
将数据加载到与ADO.NET兼容的、使用数据库表或视图的各种数据库中。
数据挖掘模型定型目标
为数据挖掘模型定型。
DataReader目标
使用ADO.NETDataReader界面显示数据流中的数据。
维度处理目标
加载并处理SQLServerAnalysisServices维度。
Excel目标
将数据写入Excel工作簿。
平面文件目标
将数据写入平面文件。
OLEDB目标
使用OLEDB访问接口加载数据。
分区处理目标
加载并处理AnalysisServices分区。
原始文件目标
将原始数据写入文件。
记录集目标
创建ADO记录集。
脚本组件
使用脚本提取、转换或加载数据。
SQLServerCompactEdition目标
向SQLServerCompact数据库中插入行。
SQLServer目标
将数据大容量插入SQLServer表或视图。
♦可从Microsoft网站下载的目标。
源
说明
Oracle目标
Oracle目标是MicrosoftConnectorforOraclebyAttunity的目标组件。
MicrosoftConnectorforOraclebyAttunity还包括连接管理器和源。
SAPBI目标
SAPBI目标是MicrosoftConnectorforSAPBI的目标组件。
MicrosoftConnectorforSAPBI还包括连接管理器和源。
Teradata目标
Teradata目标是MicrosoftConnectorforTeradatabyAttunity的目标组件。
MicrosoftConnectorforTeradatabyAttunity还包括连接管理器和源。
♦在现有目标没有满足您的需求时您创建的自定义目标。
下图为数据流的一个示例:
4.连接管理器,连接到不同类型的数据源以提取和加载数据。
♦连接到源和目标数据存储区(如文本、XML、Excel工作簿和关系数据库),以提取和加载数据。
♦连接到包含引用数据的关系数据库,以执行完全查找或模糊查找。
♦连接到关系数据库,以运行SQL语句(例如,SELECT、DELETE和INSERT命令)以及存储过程。
♦连接到SQLServer以执行维护和传输任务,例如,备份数据库和传输登录名。
♦在文本和XML文件中以及SQLServer表中写入日志项,并将包配置写入SQLServer表。
♦连接到SQLServer以创建某些转换在执行其工作时需要的临时工作表。
♦连接到AnalysisServices项目和数据库,以访问数据挖掘模型、处理多维数据集和维度,并运行DDL代码。
♦指定现有的文件和文件夹,或创建新的文件和文件夹,以便用于Foreach循环枚举器和任务。
♦连接到消息队列和WindowsManagementInstrumentation(WMI)、SQLServer管理对象(SMO)、Web和邮件服务器。
5.变量,变量存储SQLServerIntegrationServices包及其容器、任务和事件处理程序在运行时可以使用的值。
可以将IntegrationServices包中的变量用于下列目的:
♦在运行时更新包元素的属性。
例如,可以动态设置Foreach循环容器所允许的并发可执行文件数。
♦包含内存中的查找表。
例如,包可以运行加载带数据值的变量的执行SQL任务。
♦加载带数据值的变量,然后使用这些变量指定WHERE子句中的搜索条件。
例如,脚本任务中的脚本可以更新执行SQL任务中的Transact-SQL语句所使用的变量的值。
♦加载带整数的变量,然后使用该值控制包控制流中的循环。
例如,可以在For循环容器的计算表达式中使用变量来控制迭代。
♦在运行时填充Transact-SQL语句的参数值。
例如,包可以运行执行SQL任务,然后使用变量动态设置Transact-SQL语句中的参数。
♦生成包含变量值的表达式。
例如,派生列转换可以用变量值乘以列值所得结果来填充
IntegrationServices支持两种类型的变量:
用户定义的变量和系统变量。
用户定义变量由包开发人员定义,系统变量由IntegrationServices定义。
可以创建包所需数量的用户定义变量,但不能另外创建系统变量。
(1)命名空间
IntegrationServices提供两个命名空间,User和System。
默认情况下,自定义变量位于User命名空间中,系统变量位于System命名空间中。
可以为用户定义变量创建其他命名空间,并可以更改User命名空间的名称,但不能更改System命名空间的名称,也不能向System命名空间添加变量或将系统变量分配到其他命名空间。
(2)范围
变量在包的作用域内或者包中的容器、任务或事件处理程序的作用域内创建。
因为包容器位于容器层次结构的顶部,所以包作用域内的变量所起作用类似于全局变量,而且这些变量可由包中所有容器使用。
同样,在For循环容器等容器的范围内定义的变量可由For循环容器中所有任务或容器使用.
(3)值
用户定义变量的值可以是文字或表达式。
变量包含设置变量值和值的数据类型的选项。
这两种属性必须兼容:
例如,字符串值不能与整数数据类型一起使用。
如果将变量配置为作为表达式进行计算,则必须提供表达式。
在运行时计算表达式,而该变量将设置为计算结果。
例如,如果变量使用表达式DATEPART("month",GETDATE()),则变量的值与当前日期月份部分的数字相同。
表达式必须是使用SSIS表达式语法的有效表达式。
表达式和变量一起使用时,表达式可以使用文字以及表达式语法所提供的运算符和函数,但表达式不能引用包中数据流的列。
表达式的最大长度为4000个字符。
(4)配置变量
可以通过SSIS设计器或以编程方式来设置属性。
6.事件处理程
事件处理程序内容
建事件处理程序与生成包类似;事件处理程序具有多个任务和容器,这些任务和容器按照一定顺序组织成控制流,事件处理程序也可以包含多个数据流。
SSIS设计器包含“事件处理程序”选项卡,用于创建自定义事件处理程序。
运行时事件
事件处理程序
事件
OnError
OnError事件的事件处理程序。
此事件��发生错误时由可执行文件引发。
OnExecStatusChanged
OnExecStatusChanged事件的事件处理程序。
此事件在其执行状态更改时由可执行文件引发。
OnInformation
OnInformation事件的事件处理程序。
此事件在可执行文件的验证和执行期间引发以报告信息。
此事件仅传递信息,不传递错误或警告。
OnPostExecute
OnPostExecute事件的事件处理程序。
此事件由可执行文件在其运行完成后立即引发。
OnPostValidate
OnPostValidate事件的事件处理程序。
此事件由可执行文件在其验证完成时引发。
OnPreExecute
OnPreExecute事件的事件处理程序。
此事件由可执行文件在其运行前引发。
OnPreValidate
OnPreValidate事件的事件处理程序。
此事件由可执行文件在其验证开始时引发。
OnProgress
OnProgress事件的事件处理程序。
此事件由可执行文件在其完成可度量的进度时引发。
OnQueryCancel
OnQueryCancel事件的事件处理程序。
此事件由可执行文件引发,以确定它是否应停止运行。
OnTaskFailed
OnTaskFailed事件的事件处理程序。
此事件由任务在其失败时引发。
OnVariableValueChanged
OnVariableValueChanged事件的事件处理程序。
此事件在变量值更改时由可执行文件引发。
此事件由此变量的可执行文件引发。
如果将变量的RaiseChangeEvent属性设置为False,则不引发此事件。
有关详细信息,请参阅IntegrationServices变量。
OnWarning
OnWarning事件的事件处理程序。
此事件在发生警告时由可执行文件引发。
配置事件处理程序
可以在BusinessIntelligenceDevelopmentStudio的“属性”窗口中设置属性,或以编程方式设置属性。
7.日志提供程序,
SQLServerIntegrationServices包含可用来在包、容器和任务中执行日志记录的日志提供程序。
通过日志记录可以捕获有关包的运行时信息,从而帮助您在每次运行包时对其进行审核和故障排除。
例如,日志可以捕获运行包的操作员的姓名以及包开始和完成的时间。
IntegrationServices包含下列日志提供程序:
♦文本文件日志提供程序,将日志项以逗号分隔值(CSV)格式写到ASCII文本文件。
这种提供程序的默认文件扩展名是.log。
♦SQLServerProfiler日志提供程序,写入可用SQLServer事件探查器查看的跟踪。
这种提供程序的默认文件扩展名是.trc。
♦SQLServer日志提供程序,将日志项写入SQLServer数据库中的sysssislog表。
♦Windows事件日志提供程序,将日志项写入本地计算机上Windows事件日志中的应用程序日志。
♦XML文件日志提供程序,将日志文件写入XML文件。
这种提供程序的默认文件扩展名是.xml。
三使用脚本任务扩展包
脚本任务通过以MicrosoftVisualBasic2008或MicrosoftVisualC#2008编写,在包运行时编译和执行的自定义代码来扩展MicrosoftIntegrationServices包的运行时功能。
当IntegrationServices包含的任务不能满足您的要求时,脚本任务可简化自定义运行时任务的开发。
脚本任务可用于编写所有必需的基础结构代码,这样您就可以只将注意力集中于自定义处理所需的代码。
脚本任务通过全局Dts对象,即在脚本环境中公开的ScriptObjectModel类实例与包含包进行交互。
可以在脚本任务中编写用于修改存储在IntegrationServices变量中的值的代码;稍后,包可使用这些更新值来确定其工作流的路径。
脚本任务还可以使用VisualBasic命名空间、.NETFramework类库以及自定义程序集来实现自定义能。
1.脚本任务编辑器(常规页,脚本页,表达式页):
常规页:
可以为脚本任务指定唯一的名称和说明。
脚本页:
显示脚本任务的自定义属性。
表达式页:
可以使用表达式为脚本任务属性和其他许多任务属性提供值。
2.在脚本任务中与包进行交互
脚本任务使用全局Dts对象(ScriptObjectModel类的一个实例)及其成员与包含包和IntegrationServices运行库进行交互。
下表列出了ScriptObjectModel类的主要公共成员,该类通过全局Dts对象向脚本任务代码公开。
本节中的主题详细讨论这些成员的使用。
成员
用途
Connections
提供对包中定义的连接管理器的访问。
Events
提供事件接口,使脚本任务能够引发错误、警告和信息性消息。
ExecutionValue
提供一种向运行库返回单个对象(除TaskResult之外)的简单方法,该对象还可用于工作流分支跳转。
Log
向已启用的日志提供程序记录信息,如任务进度和结果。
TaskResult
报告任务成功或失败。
Transaction
提供任务的容器运行于的事务(如果有)。
Variables
提供对ReadOnlyVariables和ReadWriteVariables任务属性中列出的、在脚本中使用的变量的访问。
ScriptObjectModel类还包含一些您可能不会使用的公共成员。
成员
说明
VariableDispenser
使用Variables属性可更加方便地访问变量。
虽然您可以使用VariableDispenser,但您必须为读和写显式调用锁定和解锁变量的方法。
使用Variables属性时,脚本任务会为您处理锁定语义。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSIS
![提示](https://static.bdocx.com/images/bang_tan.gif)