SSIS学习使用一:SQL Server Integration Services介绍和基础认知

3,297 阅读6分钟

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

什么是SSIS

SQL Server Integration Services(SSIS)是用于构建企业级数据集成和数据转换解决方案的平台。使用集成服务,通过复制或下载文件、加载数据仓库、清洗挖掘数据、管理SQl Server对象和数据的方式,解决复杂的商业问题。它可以从一个或多个数据源(如XML、数据文件、文本文件或关系数据源)提取或转换数据,并将其加载到一个或多个目标中。

SSIS是微软商业智能解决方案的一大利器,功能非常强大,可以实现在不书写一行代码的情况下创建一个解决方案。同时,也可以通过编程的方式扩展SSIS的功能。

SSIS浅显一点说就是一种 ETL(Extract Transform Load)工具,也就是说,SSIS的目的就是用于各种数据源之间提取、转换和加载数据,以任何你能想到的编程方式更改数据。

收集和清理来自不同来源的数据,并将数据加载到数据仓库等目的地通常非常复杂和繁琐。为此,Integration Services 使用控制流引擎来管理工作流,数据流引擎来管理数据流管道。

Integration Services 包括:

  • 用于生成和调试包的图形工具和向导;

  • 执行工作流功能(如 FTP 操作【连接到ftp服务器】)、执行 SQL 语句和发送电子邮件的任务;

  • 提取和加载数据的源和目标,如处理文件、复制数据库对象等;

  • 用于清理、聚合、合并和复制数据的转换(transformations);

  • 一个管理包执行和存储的数据库SSISDB

  • 用于对 Integration Services 对象模型编程的应用程序编程接口(APIs)。

SSIS的常见用途:

  • 导入和导出数据

  • 集成来自Oracle和旧数据库以及分支机构的数据。

  • 清理和标准化数据

  • 支持BI的解决方案

DTS:Data Transformation Service 数据转换服务,这是SQL Server 最早提供的数据提取、转换服务。SQL Server 2005 之后被推出的 SSIS 替代。

对SSIS的认识

SSIS集成服务听起来比较高大上,但实际上几乎每个使用 SQL Server 的用户都使用过它的功能。比如 SQL Server 的导入导出向导(SQL Server Import and Export Wizard)

如上所示,如果使用此向导,就是在使用SSIS。第二个选项“保存SSIS包”复选框,默认是不勾选的,大多数情况下都是点击“下一步”。但也可以保存为SSIS包,便于后面查看和重新使用。

再比如,最常用的维护计划任务,也是SSIS包。

SSIS体系和功能结构

SSIS 的体系结构主要由四部分组成:Integration Services 服务、Integration Services 对象模型、Integration Services 运行时和运行时可执行文件以及封装数据流引擎和数据流组件的数据流任务。

  • 数据集成

主要包括从 A 点到 B 点的移动数据,或者从某些来源到某些目标。源和目标可以是数据库,也可以不是数据库。

SSIS可以连接许多数据源和数据目标:OLE DB、ADO、ADO.NET、Excel、Flat File。同时开发者也可以创建自定义连接管理器

  • 数据库管理

有时需要转移数据。导入导出向导可以用来在Excel、SQL Server表、平面文件和ODBC连接等之间迁移数据,它允许表或查询级别的数据转移,从而使DBA可以扩展在迁移数据时,对数据进行聚合和转换的能力。

  • 商业智能

在商业智能中,数据集成工具的主要用途是数据的提取、转换和加载(ETL)操作。SSIS的核心是数据流任务(Data Flow Task),它的设计理念形象地描述为"流水线结构",数据流任务是一个强大且灵活的数据泵。

SSIS适用于设计模式。

SSIS中一个受欢迎的加载设计模式是“增量加载”(Incremental Load)。借助于此,仅仅新的或更新的数据会从源移动到目标表。实现增量加载的一个主要方法可以图解为如下:

  • 职责分离

不像DTS和其他数据迁移产品,SSIS分离工作流和数据流的操作。控制流以同步方式管理工作流;按顺序完成每个任务后,再转到下一个任务。

在控制流中,并发的实现是通过创建多个执行路径(path)。数据流(Data Flow)获取、转换、加载"大块"数据;一次一个缓冲区。在数据流操作期间的任何时刻,都可能存在未读入数据流管道的行、正被数据流组件进行转换处理的行、已经处理和加载到目标中的行。

SSIS包

SSIS中的包是连接控制流元素、数据流元素、事件处理程序、变量、参数和配置的有组织的集合。可以通过SSIS图形设计工具组合或编程方式构建。可以将完成的包保存到SQL Server、SSIS包存储、文件系统,或者部署sslSnoversion项目到SSIS服务器。

包是检索、执行和保存的工作单元。

默认创建的包是一个空项目,可以向包中添加控制流,并可选地添加一个或多个数据流。

下面的图显示了一个简单的包,它包含一个控制流,控制流中有一个包含一个数据流的数据流任务。

创建了基本的包后,还可以添加高级特性,比如日志、扩展包功能的变量。

然后,可以通过设置实现安全性,允许从检查点重新启动包或将事务合并到包。

集成服务包括一套丰富的内建和转换任务,构建包的图形工具。以及集成目录数据库(Integration Services Catalog database),用来存储、运行和管理包。

SSIS包通俗来说,就是一个完整的完成某项数据处理任务的程序,包文件*.dtsx采用XML格式。

A package in SSIS is an organized collection of connections like data flow elements, control events, event handlers, parameters, variables, and configurations. You assemble them either building it programmatically or by graphical design tools that SSIS provides.

Top 40 SSIS Interview Questions and Answers

关于SSDT

SSIS的包开发和管理工具包括:SQL Server Data Tools (SSDT)(用于开发集成服务包)、SQL Server Management Studio(用于生产环境中管理包)

SQL Server Data Tools已经集成到 Visual Studio 中进行SSIS包的开发

SSDT是用来开发SSIS包的开发工具,集成在 Visual studio 中。用于开发SQL Server分析服务(Analysis Services,SSAS)、SQL Server集成服务(Integration Services,SSIS)和SQL Server报表服务(Reporting Services,SSRS)。SSDT是 SQL Server 的开发者工具,还可以用于SQL Azure的开发中。

SQL Server 2014开始,SSDT开发环境不再包含在SQL Server的安装包内。此时安装SSDT的方式分为两种,一种是在 Visual studio 安装时,选择Data storage and processing选项下的SQL Server Data Tools

或者下载SSDT独立安装版本,如果没有安装visual studio,将会安装一个最小版本的Visual Studio。从 Visual Studio 2019 开始,似乎不再提供SSDT独立安装版本。

SSDT 的前身是 Business Intelligence Development Studio(BIDS)。

参考

主要参考自官方文档的Integration Services (SSIS) PackagesWhat is SSIS? Level 1 of the Stairway to Integration Services,以及其它一些资料。