SQL 11 (代号 Denali) 入门 - 第三部分 (CTP 1 中的 SSIS 功能)






4.89/5 (10投票s)
本文将从 SSIS 的角度探讨 Denali 为我们提供的新功能。
SQL 11 (代号 Denali) 入门 - 第三部分 (CTP 1 中的 SSIS 功能)
目录
- 引言
- 背景
- SSIS 新功能和增强功能
- SSIS 工具箱改进
- 添加 SSIS 工具箱按钮
- 添加参数和变量按钮
- 撤销和重做
- 包设计器中的缩放选项
- 多行注释
- 数据流设计器中的可折叠分组
- 简化的数据查看器配置
- 源和目标助手
- 解析引用
- 旧版部署模型转换
- SSIS DB
- SSIS 目录
- 环境、环境变量和环境引用
- 结论
引言
2010 年 11 月 8 日,微软在技术领域发布了一个最热门、最令人兴奋的开发成果,即 **SQL Server 2011 (代号 Denali)** 的社区技术预览版 1 (CTP 1)。CTP1 有 32 位和 64 位版本可供下载。不出所料,Denali 为 SQL 用户带来了许多新功能,无论他们是开发人员、管理员还是商业智能 (BI) 专业人士。在本系列中,我们将探讨一些 **SSIS 的新功能**。在第一部分中,我们已经了解了 SSMS 的一些增强功能和新功能。第二部分详细介绍了 T-SQL 的增强功能和新功能。其余功能将在后续系列中介绍。
背景
在过去的几年里,微软为开发人员带来了许多新技术。随着 SQL Server 2005 (代号 **Yukon**) 的推出,SQL Server 的术语发生了翻天覆地的变化,在其后的版本如 SQL Server 2008 (代号 **Katmai**) 和 SQL 11 (代号 **Denali**) 中,也同样保持了引入新功能、增强功能和改进的步伐。在本文中,我们将探讨 Denali 从 SSIS 角度已经提供的一些新功能。后续文章将侧重于其他领域的增强功能。
SSIS 新功能
在 SQL 11 (代号:Denali) 中,新的 SSIS 工具箱以更有意义的方式进行了组织。
最引人注目的是引入了两个新类别,即“收藏夹”和“常用”,它们已经预先加载到工具箱中。这适用于控制流、数据流、事件处理程序和包资源管理器。
下图显示了控制流选项卡的“收藏夹”和“常用”类别。
下图显示了控制流选项卡的“收藏夹”和“常用”类别的引入。
正如您可能注意到的,工具箱中添加了一些新项,例如“目标助手”和“源助手”(位于“收藏夹”类别中)以及“数据校正”(位于“其他”类别中)。稍后将详细介绍这些组件。
然而,在包资源管理器部分,这些类别是禁用的。
这是正确的。但我个人认为,在这些类别放在这里是没有必要的,因为它们没有任何意义。总之,让我们继续进行其他内容。
现在我们可以将组件在类别之间来回移动。在“收藏夹”类别中,如果我们选择任何组件然后右键单击它,会弹出一个对话框,说明“收藏夹”组件可以移动到“常用”或“其他目标”类别。
同样,“目标”类别的项也可以移动到“收藏夹”和“其他转换”类别。“其他转换”、“其他源”和“其他目标”类别的项可以移动到“收藏夹”和“常用”类别。
假设我们想将 Excel 目标从“其他目标”移动到“收藏夹”类别。所以,让我们选择“其他目标”类别中的 Excel 目标,右键单击,然后在弹出的菜单中单击“收藏夹”。Excel 目标将从“其他目标”类别中消失,并出现在“收藏夹”部分。
但是,如果我们想将其重置回来,有两种选择:
选项 1:单击 Excel 目标,然后右键单击它,在弹出的对话框中,单击 **“移动到其他目标”**
选项 2:单击 **“刷新工具箱默认设置”** 以恢复原状。
这是一个新的添加项,它提供了有关组件的信息。如果没有选择任何项,则关联的帮助按钮将禁用。
假设我们想了解目标助手。为此,我们需要选择该项,然后有关它的信息将出现在信息窗口中。帮助按钮也将被启用。
单击帮助按钮将打开下面的窗口,有关组件的信息可以从在线 MSDN 或本地获取。
通过单击包设计界面右上角的 SSIS 工具箱按钮,可以打开 SSIS 工具箱。
另一个小的添加是新的参数和变量按钮,它位于 SSIS 工具箱按钮的前面。
现在可以使用撤销 (Ctrl+Z) 和重做 (Ctrl+Y) 选项来撤销或重做操作。
包设计器具有缩放选项,通过该选项我们可以放大和缩小包视图。默认值为 100%。
SSIS 功能的又一个小型添加。请看下面的示例:
单击“添加注释”后,我们可以添加我们的注释。
在 Denali 中,我们可以选择在控制流和数据流中对组件进行分组。其优点列在下面:
- 节省工作流设计器中的空间。
- 更清晰的包设计。
- 易于理解操作流程。
- 降低理解大型复杂包的复杂度。
这是一个非常简单的包,其中有一个 OLEDB 源和两个平面文件目标。首先,我们使用位于“常用”类别中的排序组件对输入记录进行排序,然后将其传递给条件拆分组件,其中根据条件拆分排序记录,然后根据条件通过平面文件目标写入平面文件。
但是,如果我们仔细查看包设计,它看起来有些杂乱(至少对我来说)。这里显示了四条流。然而,通过使用分组,可以更好地组织。
让我们按住 CTRL 并单击 OLE DB 源和排序组件,然后右键单击以弹出上下文菜单。在上下文菜单中,选择“分组”,如下图所示:
单击“分组”菜单,然后为组(此处为“源”)提供一个合适的名称。此时,设计应如下所示:
现在,让我们通过遵循相同的定义过程对平面文件目标进行分组,包的最终外观将是:
正如您可以发现的,包现在看起来比以前更清晰,也更容易阅读。如果我们想取消分组,然后选择特定的组,右键单击以弹出上下文菜单并选择“取消分组”。下图将为“源”组显示此操作:
分组功能虽然易于调用,但在进行包设计时非常有用,因为它降低了流程的理解难度。我们还可以创建嵌套分组。由于这是一个设计时功能,因此几乎不会影响运行时包执行。
在 Denali 中,数据查看器得到了极大的简化。我们现在可以选择启用或禁用数据流路径上的数据查看器。它仅支持网格视图,并且删除了以前的直方图和散点图视图等功能。
让我们以前面的示例为例:
现在,让我们选择源和条件拆分之间的数据流路径,然后右键单击该数据流路径以弹出上下文菜单,从中我们需要选择“启用数据查看器”选项,如下所示:
完成后,数据查看器将显示在数据流路径中,如下所示:
请注意,通过选择数据流路径并按 Ctrl + F9 也可以做到这一点。
现在,让我们通过双击 DataViewer 图标或右键单击它并选择“编辑…”选项来访问数据查看器路径编辑器。
“常规”选项卡提供有关当前数据查看器的常规信息。在“元数据”选项卡中,我们可以查看列元数据。
现在让我们查看数据查看器选项卡,如下所示:
“未使用列”区域显示尚未选择显示的列列表,而“数据查看器”将在包运行时显示数据。“显示列”区域列出了在运行时从数据查看器查看数据时将参与的列。一旦应用程序运行,数据查看器将显示如下:
这是我们排序操作的结果。
可以通过单击“禁用数据查看器”选项来禁用数据查看器。
这两个是 SSIS 数据流组件的新增功能。基本上,这两个组件是为了让 SSIS 开发人员更方便地使用常见的数据流源和常见的数据流目标而设计的。
它们出现在收藏夹部分。
让我们分别详细观察它们。
源助手
此组件从各种源拾取数据。该助手将帮助轻松选择一个源(从可用数据源列表中)并将其与合适的连接管理器关联。
让我们将一个源助手组件拖放到数据流设计器中,然后会出现“添加新源”对话框。
正如您可能注意到的,最初只列出了系统中安装的组件。让我们取消选中“仅显示已安装”复选框,这将显示所有可用的源组件。
目标助手
此组件将数据发送到各种目标。该助手将帮助轻松选择一个目标(从可用目标列表中)并将其与合适的连接管理器关联。
让我们将一个目标助手组件拖放到数据流设计器中,然后会出现“添加新目标”对话框。
正如您可能注意到的,最初只列出了系统中安装的组件。让我们取消选中“仅显示已安装”复选框,这将显示所有可用的目标组件。
源和目标助手的简单实验
在这个简单的例子中,我们将使用 SQL Server 作为我们的源和目标组件。
我们的源表有两个字段,即类型为 int 的 Id 和类型为 varchar(50) 的 Name 列。
我们将以任意方式填充一些记录到源表中。目标表将具有与源表相同的模式,但我们的目标是在按名称升序排序后将记录插入目标表中。源表在填充记录后看起来如下:
首先,将一个数据流任务拖放到控制流设计器中。在“添加新源”对话框中,选择 SQL Server 组件,然后单击“确定”按钮,这将弹出连接管理器。
单击“确定”按钮。 OLEDB 源组件将出现在数据流设计器中。
将其重命名为“源”,然后右键单击组件,单击“编辑”,这将弹出 OLEDB 源编辑器,我们在其中指定我们的源表名(此处为 tbl_Source)。
单击“确定”。接下来,从“常用”部分拖放一个排序组件,并按名称排序。还将 OLEDB 源组件连接到排序组件。
单击“确定”。接下来,将一个目标助手拖放到数据流设计器中。
正如您所见,我们的连接字符串已可用。单击“确定”。将排序组件连接到 OLEDB 目标组件。右键单击 OLEDB 目标组件,选择目标表名(此处为 tbl_Destination),然后映射列。
单击“确定”。此外,在排序和 OLEDB 目标组件的节点之间添加一个数据查看器。此时,我们的包组件将如下所示:
现在,让我们生成并运行包。数据查看器显示如下:
单击 按钮,在设计器中,我们将看到所有组件都标为绿色,这表示操作已成功。
现在让我们回到 tbl_Destination,结果如下:
考虑以下示例:
我们有一个平面文件源,一个按 Name 列对记录进行排序的排序组件,最后将结果写入一个平面文件目标。源文件 (source.txt) 如下:
Id Name Age Sex 1 Niladri 25 M 2 Arina 22 F 3 Deepak 28 M 4 Sachin 27 M
如果我们正确映射列并进行适当的数据路径分配后运行包,那么最终结果将写入目标文件 (destination.txt),其结果集如下:
Id Name Age Sex 2 Arina 22 F 3 Deepak 28 M 1 Niladri 25 M 4 Sachin 27 M
排序转换编辑器如下所示:
表示排序是基于 Name 列升序进行的。
现在让我们将源文件 (source.txt) 中的 **“Name”** 列重命名为 **“New Name”**,如下所示:
Id NewName Age Sex 1 Niladri 25 M 2 Arina 22 F 3 Deepak 28 M 4 Sachin 27 M
并且让我们添加一个新的平面文件源,其数据源是 source.txt 文件。设计器现在将如下所示:
正如您所看到的,在平面文件源和排序组件之间的数据流路径上出现了一个红色 (X) 并且错误消息显示为“此路径存在一些映射错误”。
此时,如果我们打开排序转换编辑器,我们会注意到列名不匹配,因此出现了错误。
为了解决这个列引用错误,新的“解析引用”编辑器开始发挥作用。它有助于将未映射的输出列映射到未映射的输入列。
让我们看看如何做到这一点。
右键单击平面文件源和排序组件之间的数据流路径,然后在上下文菜单中单击“解析引用”。
或者,我们可以双击红色 (X) 交叉来执行此操作。这将弹出“解析引用”编辑器对话框,如下所示:
从“解析引用”编辑器对话框中,我们可以看出它包含以下组件:
组件名称 | 在图中标记为 | 描述 |
未映射的输出列 [源] | 1 | 要映射的源列。 |
映射列(源) | 2.a | 源列。 |
映射列(目标) | 2.b | 目标列。 |
未映射的输出列 [目标] | 3 | 尚未映射的目标列。 |
我们将把 **NewName** 从“未映射的输出列”的“源”组件拖到“映射列”的“源”中。同样,我们将把 **Name** 从“未映射的输入列”的目标组件拖到“映射列”的目标中。
或者,我们可以从“映射列”的“源”和“目标”下拉列表中选择。
如果单击“预览更改”按钮,将打开“预览解析引用”编辑器,如下所示:
其中列名已解析。单击“确定”返回到设计器,引用已解析。
排序转换编辑器现在显示列名已相同。
包现在将正常运行。
结论
在本系列中,我们已经了解了 SSIS 的一些增强功能,例如“收藏夹”和“常用”类别的添加、可折叠分组、源和目标助手的引入等。但这还不是全部。还有更多内容需要探索,例如 SSISDB 和目录、旧版部署模型转换等。我将在探索它们时继续添加这些主题。敬请关注并分享您对本文的看法。
感谢阅读。