SSIS资料转换工具介绍(原DTS)

合集下载

SSIS学习指南

SSIS学习指南

SSIS 学习(1) 概要俗话说:“十年磨一剑”,Microsoft 通过5年时间的精心打造,于2005年浓重推出Sql Server 2005,这是自SQL Server 2000以后的又一旷世之作。

这套企业级的数据库解决方案,主要包含了以下几个方面:数据库引擎服务、数据挖掘、Analysis Services、Integration Services、Reporting Services 这几个方面,其中Integration Services (即SSIS),就是他们之间的中转站、纽带,将各种源头的数据,经ETL到数据仓库,建立多维数据集,然后进行分析、挖掘并将结果通过Reporting Services 送达给企业各级用户,为企业的规划决策、监督执行保驾护航。

SSIS 其全称是Sql Server Integration Services ,是Microsoft BI 解决方案的一大利器,是Sql Server 2000中DTS 一个升级之作。

无论是功能上,性能上,还是可操作方面都有很大的改进。

且看下面的操作界面就可见一斑。

SQL Server 2000 DTSSql Server 2008 SSIS现在很多人都把SSIS 说成是一个ETL (Extract-Transform-Load)工具,我个人觉得不太准确,或许是大家基本上都把他做为ETL 使用,其实SSIS已经超越了ETL的功能,ETL 仅是其中之一,它在其它方面也有非常突出的表现:(1)系统维护:a)在数据库维护方面:i. 数据库备份;ii. 统计信息更新;iii. 数据库完整性检查;iv. 索引重建v. SSIS 包执行;vi. SSAS 任务处理。

b)业务处理:i. 执行SQL 任务。

ii. Web Service 任务。

c)操作系统维护:i. WMI事件观察器任务ii. 文件系统任务。

d)其它:i. 执行SQL 任务ii. 执行进程任务iii. ActiveX 脚本任务iv. 脚本任务(VB/C#).v. 执行Web Service 服务尤其是上面的第四点,可以执行SQL 任务,可以执行Web Service 服务,可以执行系统进程,可以执行(VB/C#)脚本任务,这给了我们多大想象的空间,还有什么例外的?强啊。

SSIS专题三:SSIS进阶技巧指南

SSIS专题三:SSIS进阶技巧指南

SSIS 专题三: SSIS 进阶技巧指南SSIS 进阶技巧指南SQL Server 2005 Integration Services(SSIS)提供一系列支持业务应用程序开发 的内置任务,容器,转换和数据适配器.您无需编写一行代码,就可以创建 SSIS 解决方 案来使用 ETL 和商业智能解决复杂的业务问题,管理 SQL Server 数据库以及在 SQL Server 实例之间复制 SQL Server 对象.在前两次 SSIS 技术专题中,我们介绍了关于 SSIS 的基础知识,大家已经有所了解.而在本次技术手册中,我们将介绍包括扩展 SSIS 包在内的进阶技巧,相信对那些已有 SSIS 使用经验的朋友也会有所帮助.SSIS 包的扩展SQL Server 整合服务(SSIS)是微软在 SQL Server 2005 中引入的数据转换服务 (DTS)的替代物,它加载了大量不同的组件来导入数据和将数据转换为实际数据,而不 仅仅是被动地导入.微软提供了两个基本的方法来扩展 SSIS 的功能:编写脚本和自定义对象编程. 通过编写脚本和程序来扩展 SSIS 包SSIS 与 SQL Server Integration Services(SSIS)提供了一个强大的提取,转换和加载数 据的环境,同时,大多数时候我们都可以发现 SSIS 中的内置组件更胜任管理数据.然 而,在某些情况下,我们可能需要扩展 SSIS 来满足特定需求.使用 Script 组件,我们可 以添加自定义 Visual 代码到数据流上,从而在任意 SSIS 包中使用.Net 全部功 能.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 2 of 50在 SSIS 中自定义 脚本(上) 在 SSIS 中自定义 脚本(下)导出 SQL Server 2005 数据到微软 Excel本部分介绍了从 SQL Server 2005 数据库单个表中提取数据导入 Excel 文件所使用数 据流组件的配置方法和字符映射数据转换组件的用法.通过对本部分内容的掌握,您还可 以实现选择 Excel 作为源,SQL Server 数据库作为目标的反方向的数据转移. 用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(上) 用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(下)不验证而打开 SSIS 包当我们在 SSIS Designer 中打开 SQL Server Integration Services(SSIS)包或者 添加组件到一个包时,默认情况下 SSIS 会检查不同组件使用的数据源.这个对 SSIS 包验 证过程可以确保外部元数据是有效的.如果元数据是无效的,那么我们将接收到警报或者 错误消息.有时,我们可能也想不经验证就重写默认的行为和打开 SSIS 包. 不验证而使用 SQL 属性打开 SSIS 包(上) 不验证而使用 SQL 属性打开 SSIS 包(下)SSIS 中的事务处理标签页有很多关于创建 SQL Server 集成服务(SSIS)包的信息,都关注怎样开发控制流元 素和数据流元素.众所周知,你在 SSIS 设计器的"控制流"标签页开发控制流元素,在 "数据流"标签页开发数据流元素.SSIS 设计器还提供了"事件处理程序"标签页,它支 持你设计基于包可执行体(包括文件,任务等)和它们生成事件的事件处理程序.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 3 of 50SSIS 中使用事件处理程序的五个步骤(上) SSIS 中使用事件处理程序的五个步骤(下)SSIS 中的渐变维度向导在 SQL Server 之前的版本中,你不得不通过自定义逻辑来管理实现渐变维度的处 理,这些自定义逻辑常常嵌入在数据转换服务(Data Transformation Services,DTS) 包里.SSIS 2005 有一个转换功能,可以通过运行一个配置向导基本实现 SCD. 用 SSIS 2005 向导处理渐变维度(上) 用 SSIS 2005 向导处理渐变维度(下)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 4 of 50通过编写脚本和程序来扩展 SSIS 包SQL Server 整合服务(SSIS)是微软在 SQL Server 2005 中引入的数据转换服务 (DTS)的替代物,它加载了大量不同的组件来导入数据和将数据转换为实际数据,而不 仅仅是被动地导入.但是,这里有一个问题,即使是新的 SSIS 工具也无法包括所有我们 需要做的工作. 因此,微软提供了两个基本的方法来扩展 SSIS 的功能.其中一个方法是相对简单 的,适用于没有很多的编程经验,也不想要编写复杂逻辑的用户;而另一个方法是较复杂 的,它允许更有经验的程序员深入研究 SSIS 和更广泛的扩展 SSIS. 简单的方法:脚本 大多数人可能或多或少地熟悉脚本技术,并且 SSIS 使用 来允许程序员在 SSIS 包中用脚本编写行为.与自定义对象相反,脚本的范围是小而精的;它是用于我们对现有 数据包允许或者已经实现的上下文进行一定修改的. 在 SSIS 数据包中,有两个元素我们可以用来添加脚本处理:Script Task(在 Integration Services Designer 应用的 Control Flow 窗口)以及 Script Component (在 Data Flow 窗口).每一个都最好在稍微有点不同的环境中使用. Script Task 是更适合用于软件包中通用目的的 Flow Control——它比 Script Component 更全局化更强大,但是也复杂得多.它在软件包的 Data Flow 之外运行,并且 不受 Data Flow 工作方式的限制,虽然 Script Task 一般只当一个软件包被触发的时候才 运行(虽然我们可以特别地编译).Task 同样支持断点和调试,当我们编写一个带有控制 逻辑或者执行某些决策的相当复杂的脚本时,这些是非常有用的.例如,Script Task 可 以查询 Active Directory 获取一些信息或者与另外一个数据知识库进行数据交互——两 者都可以在运行一个包之前进行. Script Component 与 Data Flow 运作的方式结合得更紧密.Script Component 不是 在整个包运行一次,它的主要过程是为每个正在处理的数据行运行一次.ScriptTT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 5 of 50Components 也同样有 3 个基本的运行上下文:数据源,数据转换或者数据目的地. Component 也同样比较少交互——比如,它并不支持 Script Task 那样的调试.Script Component 的最主要用途包括诸如一行行地数据转换,编译一个自定义 ODBC 目标,实时错 误处理或者不通过原 SSIS 方法处理的转换操作. 高级方法:自定义对象编程 虽然脚本在 SSIS 包中的功能已经强大,但是,有时候它还是没有办法完成某些任 务.在某些情况下,我们必须从头开始编写(或者让某人编写)一个自定义 SSIS 扩展. 这并不是一件容易的事情;它要求对编程有全面的理解.但是,通过自定义的对象,我们 可以使用 SSIS 进行远比简单自动化任务复杂的事情. 比如,如果我们有一个不能支持任何现有 SSIS 转换的数据源(例如,有些奇怪的专 有数据源),那么我们可以写入一个自定义的连接管理对象来像使用本地数据源一样使用 该数据.与此类似的是,我们可以用由 SSIS 提供的相同的程序库来创建自定义任务,日 志组件或者数据流组件. 上面每个类型的项目都是可以作为 SSIS 所支持语言的一个基类,属性和方法集: Visual Basic,C#,C++,J# 和 Jscript. C++,C# 和 VB 都倾向于创造最好的结果,因 为在这些上下文中它们都倾向于由开发人员和供应商两者同时广泛支持.关键在于我们所 使用的语言不能是一个阻碍;它们都可以插入相同的对外编程接口中.我们同时也可以在 需要的时候通过标准 Windows 形式创建自定义对象的用户接口. SSIS 自定义对象可以创建的一个极其强大的自定义 Foreach 遍历器.假设你需要创建 一套编程类来为一个集合中每个对象执行特定的操作,比如数据库中的表.如果你想在大 量的上下文中执行这个操作而不重复编写代码,那么这是其中的一个最佳方法.特别是当 你已经对一些新的数据类型创建了一个自定义的连接管理器(与上面的例子一样),并且 想创建一个自定义 foreach 操作来处理时,这种方法是非常有用的. 总结 我们所选择的扩展 SSIS 的方法,不管是脚本或者是编程,都是可以根据我们的需要 和能力而决定的.因为,我们可以使用这两种方法——甚至是同时使用!——我们并不需 要为我们手头上的任务做额外的工作.我们也可以按照要求混合使用.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 6 of 50关于更多的例子,当然,你可以查看上面的连接(直接连接到微软的 SSIS 包扩展文 档),虽然它们主要阐述具体的实现和例子.同时,还有一些关于这个主题的博客:例 如,Peter DeBetta's SQL Programming Blog.我也可以推荐阅读 SSIS Junkie 博客,这 些上面的文章都有关于如何在 SSIS 中实现这些方法(包括编程和其它的)的探讨.(作者:Serdar Yegulalp 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 7 of 50在 SSIS 中自定义 脚本(上)SQL Server Integration Services(SSIS)提供了一个强大的提取,转换和加载数 据的环境,同时,大多数时候我们都可以发现 SSIS 中的内置组件更胜任管理数据.然 而,在某些情况下,我们可能需要扩展 SSIS 来满足特定需求,这就是 Script 组件派上用 场的地方了.使用 Script 组件,我们可以添加自定义 Visual 代码到数据流 上,从而在任意 SSIS 包中使用.Net 全部功能. 在本文中,我将演示如何添加 Script 组件到一个 SSIS 包上.我所使用的示例包在控 制流中包含一个数据流任务.数据流任务配置了 3 个组件:OLE DB Source, Script 组件 和 Flat File Destination.图 1 显示了 Visual Studio 中显示在 Data Flow 标签中的这 些组件.图 1:Visual Studio 中的 Data Flow 视图.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 8 of 50Script 组件将根据员工的名,中间名和姓以及它们入职年月生成用户名.我从 SQL Server 2005 附带的 AdventureWorks 示例数据库中提取了员工信息.注意,SSIS 同样支 持在控制流中使用 Script 任务,然而,本文只关注在数据流中使用的 Script 组件. 虽然我的关注点是 Script 组件,但是我也将提供一些关于如何配置其它组件的信 息,以便你可以用来创建自己的解决方法.如果我们需要帮助来创建 SSIS 包或者配置组 件,那么可以查看 SQL Server 2005 Books Online. 配置 OLE DB Source 组件 OLE DB Source 组件使用本地 OLE DB 连接管理器来连接到 AdventureWorks 数据库 上.此外,组件指定了下面的 Transact-SQL 命令来从 Person.Contact 表和 HumanResources.Employee 表中检索数据: SELECT c.FirstName, c.MiddleName, stName, e.HireDate FROM Person.Contact c INNER JOIN HumanResources.Employee e ON c.ContactID = e.ContactID 正如所看到的,我根据 ContactID 字段在两个表中创建了一个简单的连接运算 (Join).我所检索到的信息将用来创建自定义的用户名. 配置 Script 组件 在我们配置了 OLE DB Source 组件之后,我们已经可以配置 Script 组件了.当添加 一个 Script 组件时,我们必须指定是否使用这个组件作为一个源(Source),转换 (Transformation)或者目标(Destination).在这个例子中,我将 Script 组件作为一 个转换来使用,因为我想在数据流中拦截数据,并根据该数据生成一个包含用户名称的额 外的字段.换言之,我准备在数据从源传输到目标时对该数据进行转换. 在我们添加了 Script 组件之后,就连接 OLE DB Source 组件到 Script 组件的数据流 路径.接着,双击 Script 组件,打开 Script Transformation 编辑器.图 2 显示了编辑 的 Input Columns 页面.在该页面中,我们通过选择字段名称旁边复选框来指定哪些字段 可作为 Script 组件的输入使用.对于这个例子,我选中了所有的 4 个字段.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 9 of 50图 2:编辑器的 Input Columns 页面. 接下来,选择 Script Transformation 编辑器的 Inputs and Outputs 页面(如图 3 所示)并展开 Input 0 和 Output 0 节点.注意,我们在 Input Columns 页面中所选择的 输入字段也同样在此显示. 我们必须添加一个输出字段来保存脚本将生成的用户名.为了添加一个字段,可以在 Output 0 节点中选择 Output Columns 子节点,点击"Add Column",接着输入 "UserName"作为字段名称.在 Inputs and Outputs 页面右边的"Data Type Properties"选项中,指定字符串作为数据类型和长度为 8.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 10 of 50图 3:Script Transformation 编辑器的 Inputs and Outputs 页面 在这个例子中,这些就是在 Script 组件中我们所需要配置的.如果我们打算在脚本 中使用系统或者包变量,那么我们必须添加这些到编辑器的 Script 页面,然而,这个方 法并不要求这些类型的变量.(作者:Robert Sheldon 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 11 of 50在 SSIS 中自定义 脚本(下)添加 Visual 代码 现在我们可以添加实际的代码到 Script 组件上了.打开 Script Transformation 编 辑器的 Script 页面,点击"Design Script". "Microsoft Visual Studio for Applications"窗口会出现,并且还包含了我们需要使用的初始 Visual 代 码,如图 4 所示.图 4:带有 代码的"Visual Studio for Applications"窗口. 代码开头是几个关于 Script 组件的注释.注释都是跟在一个单引号后面.我们可以 删除这些注释然后添加其它注释上去.注意,此处生成的 Visual Basic 代码仅限于 Script Transformation 组件的.当作为源或者目标时,组件生成的代码是不同的.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 12 of 50自动生成的代码以一系列的 Imports 语句开始来定义我们可能要在脚本中使用的初始 命名空间.我们可以根据需要添加更多的命名空间.ScriptMain 类跟在 Imports 语句之 后,然后是类中的 Input0_ProcessInputRow()方法.我们必须以这个类和方法开始,然 后再添加我们的自定义代码到方法中,此处的注释说明:"在此处添加你的代码". 正如我们所看到的,SSIS 让一切变得简单多了.只需要在指定的地方上输入我们的代 码.对于本文中所探讨的方法,我首先定义了一组变量,然后将变量合并在一起来创建用 户名.你可以点击此处下载所有 Visual 代码. 首先,我创建名字,中间名和姓变量,它们分别是 First,Middle 和 Last.在第一行 中,我声明了 First 变量类型为字符串,接着,在第二行中,我给它赋值为名字的第一个 字母: Dim First As String First = LCase(Row.FirstName.Substring(0, 1)) 注意,我使用了 Row 变量——它是在 Input0_ProcessInputRow()方法中定义的—— 来从输入中取回 FirstName 字段.当我取到这个名字时,我使用了 Substring()方法来 只截取结果的第一个字母.接着,我将结果传递给 LCase()方法,将字母全部转换为小 写. 对于 Middle 变量,我执行类似地操作,但是我首先检查了 MiddleName 值是否是一个 NULL 值: Dim Middle As String If Row.MiddleName_IsNull Then Middle = "" Else Middle = LCase(Row.MiddleName.Substring(0, 1)) End If 这里我使用一个 If-Else-End If 结构来判断值是否为 NULL.如果它是一个 NULL,那 么我将 Middle 值设置为空的字符串.否则,我会跟处理名字一样取回第一个字母. 对于 Last 变量,我希望从 LastName 字段中选取前面 4 个字母.然而,我需要检查名 称包含的字母是否少于 4 个,以及是否包含一个单引号: Dim Last As String If stName.Length < 5 ThenTT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 13 of 50If stName.Contains("'") Then Last = LCase(stName.Replace("'", "")) Else Last = LCase(stName) End If Else If stName.Contains("'") Then Last = LCase(stName.Replace("'", "").Substring(0, 4)) Else Last = LCase(stName.Substring(0, 4)) End If End If 首先,我在最外部使用一个 If-Else-End If 条件来判断名字中包含的字母是否少于 5 个.如果是,那么我使用整个姓的部分.如果不是,那么我只使用它前面 4 个字母. 为了处理好名字可能包含一个单引号的情况,我在外部的 If-Else-End If 条件内再 嵌入一个 If 和 Else 语句.如果名字中包含一个单引号,那么我会用一个空的字符串替代 它.否则,我会使用名字本身. 最后,我将声明和赋值 YearHired 变量,它从 HireDate 字段中获取年份: Dim YearHired As String YearHired = CStr(Row.HireDate.Year).Substring(2, 2) 注意,我首先使用 Row 变量来检索 HireDate 字段中的 Year 属性.接着,我使用 CStr ()方法来将日期转换为字符串,然后使用 Substring()方法来检索年的最后两个数 字. 在我定义了这些变量之后,我通过组合这些变量来创建用户名: If Row.HireDate < CDate("2000-01-01") Then erName = First + Last + YearHired Else erName = First + Middle + Last + YearHired End If 再次,我使用了 If-Else-End If 条件来确定使用哪个逻辑.对于 2000 年之前所雇用 的员工,我根据名字的首字母,姓的前 4 个字母和雇用年份的最后两位数字来创建一个用TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 14 of 50户名.对于其他人,我还将中间名的首字母包括在内,除此之外其它都使用了相同的逻 辑.我将用户名称赋值到 UserName 字段上,这样,它就可以与其它的字段一样通过 Row 变量来读取了. 这就是添加一个 Script 组件到数据流上所需要的操作.在我们添加了代码之后,就 可以关闭 Visual Studio for Applications 窗口以及 Script Transformation 编辑器. 这样,我们就可以添加我们的目标组件了. 配置 Flat File Destination 组件 在我们添加了 Flat File Destination 组件之后,就连接从 Script 组件到目标的数 据流路径,同时打开 Flat File 目标编辑器.现在添加一个指向文本文件的 Flat File 连 接管理器.对于这个例子,我使用 c:\employees.txt,并将原来的 4 个字段和一个新的 UserName 字段映射到目标上.这里所有项我都使用了默认的设置.在我们完成了之后,关 闭所有打开的编辑器并保存 SSIS 包.现在运行包.员工的信息——以及新的用户名—— 将被添加到文本文件中. 当然,此处我所探讨的方法只是一个非常基本的例子.然而,它确实可以演示添加自 定义代码到 SSIS 需要的所有组件.你也可以尝试创建其它类型的脚本和添加脚本源和目 标.而且你会发现,Script 组件能够访问大量的 Visual 开发环境,并且还允 许你扩展 SSIS 包来实现所需要的任何数据提取,转换和加载(ETL).(作者:Robert Sheldon 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 15 of 50用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(上)本文选自 Jayaram Krishnaswamy 编写的《在 Visual Studio 2005 中使用 SQL Server 集成服务(SSIS)初学者指南》一书,讲述了创建 SSIS 包来实现把 SQL Server 2005 数据库表中数据导入到微软 Excel 电子表格的基础知识. 你也会学到一些关于使用字符映射数据转换组件的基础知识.在动手练习过程中,你 会练习从 SQL Server 2005 表转移数据到微软 Excel 2003 数据表文件中.你将使用由" 基于连接管理的连接到 SQL Server 2005 服务器的源组件"和"连接到 Excel 连接管理器 的 Excel 目标组件"组成的数据流任务. 为了执行下列步骤,你需要一个源数据组件和一个目标数据组件:源数据是从 MyNorthwind 数据库中提取的(该数据源只是 Northwind 数据库重命名后的版本),该 数据库运行于 SQL Server 2005 服务器;我们的目标是加载该数据到微软 Excel 2003 数据 表文件中.你还需要建立一条路径来连接它们.此外,你也还要插入一个字符映射数据流 任务,它会转换其中一个数据字段内部的文本,这样一来,该列所有字符转换后都变成了 大写形式. 把 SQL Server 数据转移到 Excel 文件 第一步:创建 SQL Server BI 项目并添加一个数据流任务 第二步:配置数据读取组件(DataReader)的连接管理器 第三步:为 SQL Server 数据设置数据读取源组件 第四步:给 SQL Server 数据转换组件设置字符映射机制 第五步:添加 Excel 目标组件并创建连接到字符映射组件的路径 第六步:配置微软 Excel 目标组件 第七步:测试从 SQL Server 表到 Excel 的数据转移 第一步:创建 SQL Server BI 项目并添加一个数据流任务TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 16 of 50在这一部分,你将创建一个商业智能项目,然后修改默认包对象的名称.既然我们要 做的事与数据有关,你将会添加一个数据流任务,还会给数据流中添加一个数据读取组件 (DataReader). 按照第二章或第三章的介绍,创建一个商业智能项目 Ch5. 把默认包名称 Package.dtsx 改为 TableToXls.dtsx. 从工具箱中拖拽一个数据流任务组件到控制流页. 点击打开数据流标签页,该标签显示了数据流页. 现在你就可以访问工具箱中的数据流选项了.这些选项有:数据流源组件,数据流目 标组件,数据流转换组件(参考第一章). 从数据流源组件组中拖拽数据读取(DataReader)源组件到数据流页面. 第二步:配置数据读取组件(DataReader)的连接管理器 关于配置连接到本地 SQL Server 2005 数据读取(DataReader)源组件的方法已介绍 过了.这里只列出几个与本章需要展示的内容相关的步骤. 在连接管理器页面下方单击右键,然后从右键菜单中选择"新建 连 接". 如果你是在读过第四章(并做过其中的练习)以后才进行本章的练习,你会看见配置 连接管理器屏幕显示之前配置的连接管理器.如果你需要创建新的连接配置,你 可以按照上一章中讲的步骤进行. 在配置 连接管理器窗体中点击确定(OK)按钮. 连接管理器"Localhost.MyNorthwind.sa"就被添加到连接管理器页面了. 第三步:为 SQL Server 数据设置数据读取(DataReader)源组件 在下拉菜单中右键点击数据读取源组件(DataReader). 在下拉菜单中选择编辑(Edit),就可以打开数据读取(DataReader)源组件高级编 辑器.首先,你需要指定一个数据读取组件(DataReader)可用的连接管理器. 在刚显示的数据读取(DataReader)源组件高级编辑器中,点击连接管理器标签.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 17 of 50点击列表标题连接管理器下面的空白区域(灰色区域),在这里,你会看到你在第一 步中添加的连接管理器. 选择这个连接管理器. 接下来,点击组件属性标签打开数据读取组件(DataReader)属性.在这里,你会发 现它要求填写一个 SQLCommand(目前唯一空白的填充项). 点击它旁边的省略号按钮会显示一个文本编辑器,在那里面你可以写入 SQL 命令. 你可以直接写上下面这句 SQL 命令: SELECT CustomerID, CompanyName, Address, City, PostalCode FROM Customers 点击刷新按钮. 这个查询意思是让 DataReader 读取 5 列字段的数据.下图是从 SQL Server 2005 Management Studio 中得到的一个表数据示例.如果你能回想起来,上一章我们也用过同 样的这些字段列. 点击列映射标签. 打开的列映射页面中会显示 DataReader 输出的列. 在编辑器的最后一个标签"输入和输出属性"中,你可以从外部列,输出列和 DataReader 错误输出中添加或者删除项目.在本教程中,我们不做修改.到此为止,配置 DataReader 从 SQL Server 2005 数据库中提取五个字段列的工作就 完成了.(作者:Jayaram Krishnaswamy 译者:冯昀晖 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 18 of 50用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(下)第四步:为 SQL Server 数据转换组件设置字符映射 字符映射转换组件是在第一章中讲到的,但是在这里我们要体验一下它的转换功能. 转换组件处理接收到的文本字符串,输出为转换后的字符串.例如:在上面我们看到的图 片中,公司名是大小写混合的,使用转换组件后,我们会在数据写到 Excel 之前,把出现 在公司名这一列的所有字符转换为大写——例如:Alfreds Futterkiste 会转换为 ALFREDS FUTTERKISTE. 在工具箱的数据流转换组件组里选择字符映射数据流项,把它拖拽到数据流页面的设 计画布上. 在 DataReader 源组件上点击右键,在右键菜单项中点击添加路径. 在弹出显示的数据流窗口中,选择转换目标为字符映射.如下图所示:在上面的窗口中点击确定(OK),此时会显示下面的新窗口.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 19 of 50。

什么是DTS?SSIS?

什么是DTS?SSIS?

什么是DTS?SSIS?什么是 DTS? DTS是⼀组⼯具,⽤于⼀个或多个数据源(如Microsoft SQL Server、Microsoft Excel 或 Microsoft Access )间导⼊、导出和转换各种数据。

通过 OLE DB (⼀种数据访问的开放式标准)提供连接,通过⽤于 ODBC的 OLE DB 提供程序来⽀持 ODBC (开放式数据库连接)数据源。

可以将 DTS解决⽅案创建为⼀个或多个软件包。

每个软件包可包含⼀组已安排好的任务,它们定义要执⾏的⼯作、对数据和对象的转换、定义任务执⾏的⼯作流约束条件以及数据源和⽬标间的连接⽅式。

DTS 软件包还提供⼀些服务,如记录软件包执⾏详细情况、控制事务和处理全局变量。

 以下⼯具可⽤于创建和执⾏ DTS 软件包: ●导⼊/导出向导⽤于⽣成相对简单的 DTS 软件包,并⽀持数据移植和简单转换。

●DTS设计器以图形⽅式来实现 DTS 对象模型,可⽤于创建具有⼀系列功能的 DTS 软件包。

●DTSRun 是⽤于执⾏现有 DTS 软件包的命令提⽰实⽤程序。

●DTSRunUI 是 DTSRun 的图形界⾯,可以传递全局变量以及⽣成命令⾏。

●SQLAgent 不是 DTS 应⽤程序,DTS 将其⽤于安排软件包的执⾏。

使⽤ DTS对象模型还可以⽤编程⽅式创建和运⾏软件包,⽣成⾃定义任务和⾃定义转换。

DTS 的新功能 Microsoft SQL Server 2000 中加⼊了多种 DTS 增强功能和新功能: ●新的 DTS 任务包括 FTP 任务、执⾏软件包任务、动态属性任务和信息队列任务。

●增强的记录功能可以保存每个软件包的执⾏信息,从⽽为您保留⼀个完整的执⾏历史记录,并可以查看每⼀任务的每个进程的信息。

可以⽣成异常情况⽂件,⽂件中包含因错误⽽⽆法处理的数据⾏。

●您可以将 DTS 软件包另存为 Microsoft Visual Basic? ⽂件。

SSIS 各种工作介绍(二)

SSIS 各种工作介绍(二)

本電子刊物之所載標誌名稱分屬各該公SSIS 各種工作介紹(二)作 者:胡百敬 審 稿:張智凱 文章編號:S060705304 出刊日期:2006/07/24前言由於SSIS 提供較DTS 更為豐富的工作(Task),筆者在這幾期的專欄中,為你介紹幾個常用的SSIS 工作。

在上期專欄中,已經探討了如何透過 SSIS 提供的「執行SQL 工作」。

在本期專欄中,再來看一下「Web 服 務工作」,以此呼叫我們自行撰寫的Web 服務。

Web 服務工作SSIS 提供的「Web 服務工作」可以呼叫執行遠端之Web 服務方法(Web Method),並將方法回傳的值寫入封裝變數或是檔案。

而後,若結果是存放在變數,則可以直接在封裝的下一個工作使用。

若是檔案,也可以再當作封裝中的資料來源,在「資料流程工作」中引用。

例如,將Web 方法的執行結果寫入資料庫內。

「Web 服務工作」使用「HTTP 連接管理員」連接到某個Web 服務。

也就是在「Web 服務工作」以外,透過封裝設計環境下方「連接管理員」另行設定「HTTP 連接管理員」,然後在工作中參考。

但據筆者測試,這似乎並不是讓你在封裝執行時期,透過各種方式來設定「HTTP 連接管理員」的ConnectionString 屬性,而後「Web 服務工作」就會動態地存取到不同位置的Web 服務。

「HTTP 連接管理員」只在設計時期對「Web 服務工作」存取 Web 服務之 WSDL 有用,一旦有了 WSDL 檔案後,「Web 服務工作」在執行時期,依靠WSDL 的 <service><port><address> 元素之location 屬性,定義Web 服務所在位置。

然而,不管是在設計時期取得WSDL ,還是執行時期呼叫Web 方法,若存取Web服務需要身分驗證,則仍是在「HTTP 連接管理員」的「使用認證」設定。

經由「HTTP連接管理員」完成存取 Web 服務的相關設定,例如伺服器URL、認證以及以秒為單位的「逾時」時間長度。

SSIS专题三:SSIS进阶技巧指南

SSIS专题三:SSIS进阶技巧指南

SSIS 专题三: SSIS 进阶技巧指南SSIS 进阶技巧指南SQL Server 2005 Integration Services(SSIS)提供一系列支持业务应用程序开发 的内置任务,容器,转换和数据适配器.您无需编写一行代码,就可以创建 SSIS 解决方 案来使用 ETL 和商业智能解决复杂的业务问题,管理 SQL Server 数据库以及在 SQL Server 实例之间复制 SQL Server 对象.在前两次 SSIS 技术专题中,我们介绍了关于 SSIS 的基础知识,大家已经有所了解.而在本次技术手册中,我们将介绍包括扩展 SSIS 包在内的进阶技巧,相信对那些已有 SSIS 使用经验的朋友也会有所帮助.SSIS 包的扩展SQL Server 整合服务(SSIS)是微软在 SQL Server 2005 中引入的数据转换服务 (DTS)的替代物,它加载了大量不同的组件来导入数据和将数据转换为实际数据,而不 仅仅是被动地导入.微软提供了两个基本的方法来扩展 SSIS 的功能:编写脚本和自定义对象编程. 通过编写脚本和程序来扩展 SSIS 包SSIS 与 SQL Server Integration Services(SSIS)提供了一个强大的提取,转换和加载数 据的环境,同时,大多数时候我们都可以发现 SSIS 中的内置组件更胜任管理数据.然 而,在某些情况下,我们可能需要扩展 SSIS 来满足特定需求.使用 Script 组件,我们可 以添加自定义 Visual 代码到数据流上,从而在任意 SSIS 包中使用.Net 全部功 能.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 2 of 50在 SSIS 中自定义 脚本(上) 在 SSIS 中自定义 脚本(下)导出 SQL Server 2005 数据到微软 Excel本部分介绍了从 SQL Server 2005 数据库单个表中提取数据导入 Excel 文件所使用数 据流组件的配置方法和字符映射数据转换组件的用法.通过对本部分内容的掌握,您还可 以实现选择 Excel 作为源,SQL Server 数据库作为目标的反方向的数据转移. 用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(上) 用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(下)不验证而打开 SSIS 包当我们在 SSIS Designer 中打开 SQL Server Integration Services(SSIS)包或者 添加组件到一个包时,默认情况下 SSIS 会检查不同组件使用的数据源.这个对 SSIS 包验 证过程可以确保外部元数据是有效的.如果元数据是无效的,那么我们将接收到警报或者 错误消息.有时,我们可能也想不经验证就重写默认的行为和打开 SSIS 包. 不验证而使用 SQL 属性打开 SSIS 包(上) 不验证而使用 SQL 属性打开 SSIS 包(下)SSIS 中的事务处理标签页有很多关于创建 SQL Server 集成服务(SSIS)包的信息,都关注怎样开发控制流元 素和数据流元素.众所周知,你在 SSIS 设计器的"控制流"标签页开发控制流元素,在 "数据流"标签页开发数据流元素.SSIS 设计器还提供了"事件处理程序"标签页,它支 持你设计基于包可执行体(包括文件,任务等)和它们生成事件的事件处理程序.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 3 of 50SSIS 中使用事件处理程序的五个步骤(上) SSIS 中使用事件处理程序的五个步骤(下)SSIS 中的渐变维度向导在 SQL Server 之前的版本中,你不得不通过自定义逻辑来管理实现渐变维度的处 理,这些自定义逻辑常常嵌入在数据转换服务(Data Transformation Services,DTS) 包里.SSIS 2005 有一个转换功能,可以通过运行一个配置向导基本实现 SCD. 用 SSIS 2005 向导处理渐变维度(上) 用 SSIS 2005 向导处理渐变维度(下)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 4 of 50通过编写脚本和程序来扩展 SSIS 包SQL Server 整合服务(SSIS)是微软在 SQL Server 2005 中引入的数据转换服务 (DTS)的替代物,它加载了大量不同的组件来导入数据和将数据转换为实际数据,而不 仅仅是被动地导入.但是,这里有一个问题,即使是新的 SSIS 工具也无法包括所有我们 需要做的工作. 因此,微软提供了两个基本的方法来扩展 SSIS 的功能.其中一个方法是相对简单 的,适用于没有很多的编程经验,也不想要编写复杂逻辑的用户;而另一个方法是较复杂 的,它允许更有经验的程序员深入研究 SSIS 和更广泛的扩展 SSIS. 简单的方法:脚本 大多数人可能或多或少地熟悉脚本技术,并且 SSIS 使用 来允许程序员在 SSIS 包中用脚本编写行为.与自定义对象相反,脚本的范围是小而精的;它是用于我们对现有 数据包允许或者已经实现的上下文进行一定修改的. 在 SSIS 数据包中,有两个元素我们可以用来添加脚本处理:Script Task(在 Integration Services Designer 应用的 Control Flow 窗口)以及 Script Component (在 Data Flow 窗口).每一个都最好在稍微有点不同的环境中使用. Script Task 是更适合用于软件包中通用目的的 Flow Control——它比 Script Component 更全局化更强大,但是也复杂得多.它在软件包的 Data Flow 之外运行,并且 不受 Data Flow 工作方式的限制,虽然 Script Task 一般只当一个软件包被触发的时候才 运行(虽然我们可以特别地编译).Task 同样支持断点和调试,当我们编写一个带有控制 逻辑或者执行某些决策的相当复杂的脚本时,这些是非常有用的.例如,Script Task 可 以查询 Active Directory 获取一些信息或者与另外一个数据知识库进行数据交互——两 者都可以在运行一个包之前进行. Script Component 与 Data Flow 运作的方式结合得更紧密.Script Component 不是 在整个包运行一次,它的主要过程是为每个正在处理的数据行运行一次.ScriptTT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 5 of 50Components 也同样有 3 个基本的运行上下文:数据源,数据转换或者数据目的地. Component 也同样比较少交互——比如,它并不支持 Script Task 那样的调试.Script Component 的最主要用途包括诸如一行行地数据转换,编译一个自定义 ODBC 目标,实时错 误处理或者不通过原 SSIS 方法处理的转换操作. 高级方法:自定义对象编程 虽然脚本在 SSIS 包中的功能已经强大,但是,有时候它还是没有办法完成某些任 务.在某些情况下,我们必须从头开始编写(或者让某人编写)一个自定义 SSIS 扩展. 这并不是一件容易的事情;它要求对编程有全面的理解.但是,通过自定义的对象,我们 可以使用 SSIS 进行远比简单自动化任务复杂的事情. 比如,如果我们有一个不能支持任何现有 SSIS 转换的数据源(例如,有些奇怪的专 有数据源),那么我们可以写入一个自定义的连接管理对象来像使用本地数据源一样使用 该数据.与此类似的是,我们可以用由 SSIS 提供的相同的程序库来创建自定义任务,日 志组件或者数据流组件. 上面每个类型的项目都是可以作为 SSIS 所支持语言的一个基类,属性和方法集: Visual Basic,C#,C++,J# 和 Jscript. C++,C# 和 VB 都倾向于创造最好的结果,因 为在这些上下文中它们都倾向于由开发人员和供应商两者同时广泛支持.关键在于我们所 使用的语言不能是一个阻碍;它们都可以插入相同的对外编程接口中.我们同时也可以在 需要的时候通过标准 Windows 形式创建自定义对象的用户接口. SSIS 自定义对象可以创建的一个极其强大的自定义 Foreach 遍历器.假设你需要创建 一套编程类来为一个集合中每个对象执行特定的操作,比如数据库中的表.如果你想在大 量的上下文中执行这个操作而不重复编写代码,那么这是其中的一个最佳方法.特别是当 你已经对一些新的数据类型创建了一个自定义的连接管理器(与上面的例子一样),并且 想创建一个自定义 foreach 操作来处理时,这种方法是非常有用的. 总结 我们所选择的扩展 SSIS 的方法,不管是脚本或者是编程,都是可以根据我们的需要 和能力而决定的.因为,我们可以使用这两种方法——甚至是同时使用!——我们并不需 要为我们手头上的任务做额外的工作.我们也可以按照要求混合使用.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 6 of 50关于更多的例子,当然,你可以查看上面的连接(直接连接到微软的 SSIS 包扩展文 档),虽然它们主要阐述具体的实现和例子.同时,还有一些关于这个主题的博客:例 如,Peter DeBetta's SQL Programming Blog.我也可以推荐阅读 SSIS Junkie 博客,这 些上面的文章都有关于如何在 SSIS 中实现这些方法(包括编程和其它的)的探讨.(作者:Serdar Yegulalp 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 7 of 50在 SSIS 中自定义 脚本(上)SQL Server Integration Services(SSIS)提供了一个强大的提取,转换和加载数 据的环境,同时,大多数时候我们都可以发现 SSIS 中的内置组件更胜任管理数据.然 而,在某些情况下,我们可能需要扩展 SSIS 来满足特定需求,这就是 Script 组件派上用 场的地方了.使用 Script 组件,我们可以添加自定义 Visual 代码到数据流 上,从而在任意 SSIS 包中使用.Net 全部功能. 在本文中,我将演示如何添加 Script 组件到一个 SSIS 包上.我所使用的示例包在控 制流中包含一个数据流任务.数据流任务配置了 3 个组件:OLE DB Source, Script 组件 和 Flat File Destination.图 1 显示了 Visual Studio 中显示在 Data Flow 标签中的这 些组件.图 1:Visual Studio 中的 Data Flow 视图.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 8 of 50Script 组件将根据员工的名,中间名和姓以及它们入职年月生成用户名.我从 SQL Server 2005 附带的 AdventureWorks 示例数据库中提取了员工信息.注意,SSIS 同样支 持在控制流中使用 Script 任务,然而,本文只关注在数据流中使用的 Script 组件. 虽然我的关注点是 Script 组件,但是我也将提供一些关于如何配置其它组件的信 息,以便你可以用来创建自己的解决方法.如果我们需要帮助来创建 SSIS 包或者配置组 件,那么可以查看 SQL Server 2005 Books Online. 配置 OLE DB Source 组件 OLE DB Source 组件使用本地 OLE DB 连接管理器来连接到 AdventureWorks 数据库 上.此外,组件指定了下面的 Transact-SQL 命令来从 Person.Contact 表和 HumanResources.Employee 表中检索数据: SELECT c.FirstName, c.MiddleName, stName, e.HireDate FROM Person.Contact c INNER JOIN HumanResources.Employee e ON c.ContactID = e.ContactID 正如所看到的,我根据 ContactID 字段在两个表中创建了一个简单的连接运算 (Join).我所检索到的信息将用来创建自定义的用户名. 配置 Script 组件 在我们配置了 OLE DB Source 组件之后,我们已经可以配置 Script 组件了.当添加 一个 Script 组件时,我们必须指定是否使用这个组件作为一个源(Source),转换 (Transformation)或者目标(Destination).在这个例子中,我将 Script 组件作为一 个转换来使用,因为我想在数据流中拦截数据,并根据该数据生成一个包含用户名称的额 外的字段.换言之,我准备在数据从源传输到目标时对该数据进行转换. 在我们添加了 Script 组件之后,就连接 OLE DB Source 组件到 Script 组件的数据流 路径.接着,双击 Script 组件,打开 Script Transformation 编辑器.图 2 显示了编辑 的 Input Columns 页面.在该页面中,我们通过选择字段名称旁边复选框来指定哪些字段 可作为 Script 组件的输入使用.对于这个例子,我选中了所有的 4 个字段.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 9 of 50图 2:编辑器的 Input Columns 页面. 接下来,选择 Script Transformation 编辑器的 Inputs and Outputs 页面(如图 3 所示)并展开 Input 0 和 Output 0 节点.注意,我们在 Input Columns 页面中所选择的 输入字段也同样在此显示. 我们必须添加一个输出字段来保存脚本将生成的用户名.为了添加一个字段,可以在 Output 0 节点中选择 Output Columns 子节点,点击"Add Column",接着输入 "UserName"作为字段名称.在 Inputs and Outputs 页面右边的"Data Type Properties"选项中,指定字符串作为数据类型和长度为 8.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 10 of 50图 3:Script Transformation 编辑器的 Inputs and Outputs 页面 在这个例子中,这些就是在 Script 组件中我们所需要配置的.如果我们打算在脚本 中使用系统或者包变量,那么我们必须添加这些到编辑器的 Script 页面,然而,这个方 法并不要求这些类型的变量.(作者:Robert Sheldon 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 11 of 50在 SSIS 中自定义 脚本(下)添加 Visual 代码 现在我们可以添加实际的代码到 Script 组件上了.打开 Script Transformation 编 辑器的 Script 页面,点击"Design Script". "Microsoft Visual Studio for Applications"窗口会出现,并且还包含了我们需要使用的初始 Visual 代 码,如图 4 所示.图 4:带有 代码的"Visual Studio for Applications"窗口. 代码开头是几个关于 Script 组件的注释.注释都是跟在一个单引号后面.我们可以 删除这些注释然后添加其它注释上去.注意,此处生成的 Visual Basic 代码仅限于 Script Transformation 组件的.当作为源或者目标时,组件生成的代码是不同的.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 12 of 50自动生成的代码以一系列的 Imports 语句开始来定义我们可能要在脚本中使用的初始 命名空间.我们可以根据需要添加更多的命名空间.ScriptMain 类跟在 Imports 语句之 后,然后是类中的 Input0_ProcessInputRow()方法.我们必须以这个类和方法开始,然 后再添加我们的自定义代码到方法中,此处的注释说明:"在此处添加你的代码". 正如我们所看到的,SSIS 让一切变得简单多了.只需要在指定的地方上输入我们的代 码.对于本文中所探讨的方法,我首先定义了一组变量,然后将变量合并在一起来创建用 户名.你可以点击此处下载所有 Visual 代码. 首先,我创建名字,中间名和姓变量,它们分别是 First,Middle 和 Last.在第一行 中,我声明了 First 变量类型为字符串,接着,在第二行中,我给它赋值为名字的第一个 字母: Dim First As String First = LCase(Row.FirstName.Substring(0, 1)) 注意,我使用了 Row 变量——它是在 Input0_ProcessInputRow()方法中定义的—— 来从输入中取回 FirstName 字段.当我取到这个名字时,我使用了 Substring()方法来 只截取结果的第一个字母.接着,我将结果传递给 LCase()方法,将字母全部转换为小 写. 对于 Middle 变量,我执行类似地操作,但是我首先检查了 MiddleName 值是否是一个 NULL 值: Dim Middle As String If Row.MiddleName_IsNull Then Middle = "" Else Middle = LCase(Row.MiddleName.Substring(0, 1)) End If 这里我使用一个 If-Else-End If 结构来判断值是否为 NULL.如果它是一个 NULL,那 么我将 Middle 值设置为空的字符串.否则,我会跟处理名字一样取回第一个字母. 对于 Last 变量,我希望从 LastName 字段中选取前面 4 个字母.然而,我需要检查名 称包含的字母是否少于 4 个,以及是否包含一个单引号: Dim Last As String If stName.Length < 5 ThenTT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 13 of 50If stName.Contains("'") Then Last = LCase(stName.Replace("'", "")) Else Last = LCase(stName) End If Else If stName.Contains("'") Then Last = LCase(stName.Replace("'", "").Substring(0, 4)) Else Last = LCase(stName.Substring(0, 4)) End If End If 首先,我在最外部使用一个 If-Else-End If 条件来判断名字中包含的字母是否少于 5 个.如果是,那么我使用整个姓的部分.如果不是,那么我只使用它前面 4 个字母. 为了处理好名字可能包含一个单引号的情况,我在外部的 If-Else-End If 条件内再 嵌入一个 If 和 Else 语句.如果名字中包含一个单引号,那么我会用一个空的字符串替代 它.否则,我会使用名字本身. 最后,我将声明和赋值 YearHired 变量,它从 HireDate 字段中获取年份: Dim YearHired As String YearHired = CStr(Row.HireDate.Year).Substring(2, 2) 注意,我首先使用 Row 变量来检索 HireDate 字段中的 Year 属性.接着,我使用 CStr ()方法来将日期转换为字符串,然后使用 Substring()方法来检索年的最后两个数 字. 在我定义了这些变量之后,我通过组合这些变量来创建用户名: If Row.HireDate < CDate("2000-01-01") Then erName = First + Last + YearHired Else erName = First + Middle + Last + YearHired End If 再次,我使用了 If-Else-End If 条件来确定使用哪个逻辑.对于 2000 年之前所雇用 的员工,我根据名字的首字母,姓的前 4 个字母和雇用年份的最后两位数字来创建一个用TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 14 of 50户名.对于其他人,我还将中间名的首字母包括在内,除此之外其它都使用了相同的逻 辑.我将用户名称赋值到 UserName 字段上,这样,它就可以与其它的字段一样通过 Row 变量来读取了. 这就是添加一个 Script 组件到数据流上所需要的操作.在我们添加了代码之后,就 可以关闭 Visual Studio for Applications 窗口以及 Script Transformation 编辑器. 这样,我们就可以添加我们的目标组件了. 配置 Flat File Destination 组件 在我们添加了 Flat File Destination 组件之后,就连接从 Script 组件到目标的数 据流路径,同时打开 Flat File 目标编辑器.现在添加一个指向文本文件的 Flat File 连 接管理器.对于这个例子,我使用 c:\employees.txt,并将原来的 4 个字段和一个新的 UserName 字段映射到目标上.这里所有项我都使用了默认的设置.在我们完成了之后,关 闭所有打开的编辑器并保存 SSIS 包.现在运行包.员工的信息——以及新的用户名—— 将被添加到文本文件中. 当然,此处我所探讨的方法只是一个非常基本的例子.然而,它确实可以演示添加自 定义代码到 SSIS 需要的所有组件.你也可以尝试创建其它类型的脚本和添加脚本源和目 标.而且你会发现,Script 组件能够访问大量的 Visual 开发环境,并且还允 许你扩展 SSIS 包来实现所需要的任何数据提取,转换和加载(ETL).(作者:Robert Sheldon 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 15 of 50用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(上)本文选自 Jayaram Krishnaswamy 编写的《在 Visual Studio 2005 中使用 SQL Server 集成服务(SSIS)初学者指南》一书,讲述了创建 SSIS 包来实现把 SQL Server 2005 数据库表中数据导入到微软 Excel 电子表格的基础知识. 你也会学到一些关于使用字符映射数据转换组件的基础知识.在动手练习过程中,你 会练习从 SQL Server 2005 表转移数据到微软 Excel 2003 数据表文件中.你将使用由" 基于连接管理的连接到 SQL Server 2005 服务器的源组件"和"连接到 Excel 连接管理器 的 Excel 目标组件"组成的数据流任务. 为了执行下列步骤,你需要一个源数据组件和一个目标数据组件:源数据是从 MyNorthwind 数据库中提取的(该数据源只是 Northwind 数据库重命名后的版本),该 数据库运行于 SQL Server 2005 服务器;我们的目标是加载该数据到微软 Excel 2003 数据 表文件中.你还需要建立一条路径来连接它们.此外,你也还要插入一个字符映射数据流 任务,它会转换其中一个数据字段内部的文本,这样一来,该列所有字符转换后都变成了 大写形式. 把 SQL Server 数据转移到 Excel 文件 第一步:创建 SQL Server BI 项目并添加一个数据流任务 第二步:配置数据读取组件(DataReader)的连接管理器 第三步:为 SQL Server 数据设置数据读取源组件 第四步:给 SQL Server 数据转换组件设置字符映射机制 第五步:添加 Excel 目标组件并创建连接到字符映射组件的路径 第六步:配置微软 Excel 目标组件 第七步:测试从 SQL Server 表到 Excel 的数据转移 第一步:创建 SQL Server BI 项目并添加一个数据流任务TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 16 of 50在这一部分,你将创建一个商业智能项目,然后修改默认包对象的名称.既然我们要 做的事与数据有关,你将会添加一个数据流任务,还会给数据流中添加一个数据读取组件 (DataReader). 按照第二章或第三章的介绍,创建一个商业智能项目 Ch5. 把默认包名称 Package.dtsx 改为 TableToXls.dtsx. 从工具箱中拖拽一个数据流任务组件到控制流页. 点击打开数据流标签页,该标签显示了数据流页. 现在你就可以访问工具箱中的数据流选项了.这些选项有:数据流源组件,数据流目 标组件,数据流转换组件(参考第一章). 从数据流源组件组中拖拽数据读取(DataReader)源组件到数据流页面. 第二步:配置数据读取组件(DataReader)的连接管理器 关于配置连接到本地 SQL Server 2005 数据读取(DataReader)源组件的方法已介绍 过了.这里只列出几个与本章需要展示的内容相关的步骤. 在连接管理器页面下方单击右键,然后从右键菜单中选择"新建 连 接". 如果你是在读过第四章(并做过其中的练习)以后才进行本章的练习,你会看见配置 连接管理器屏幕显示之前配置的连接管理器.如果你需要创建新的连接配置,你 可以按照上一章中讲的步骤进行. 在配置 连接管理器窗体中点击确定(OK)按钮. 连接管理器"Localhost.MyNorthwind.sa"就被添加到连接管理器页面了. 第三步:为 SQL Server 数据设置数据读取(DataReader)源组件 在下拉菜单中右键点击数据读取源组件(DataReader). 在下拉菜单中选择编辑(Edit),就可以打开数据读取(DataReader)源组件高级编 辑器.首先,你需要指定一个数据读取组件(DataReader)可用的连接管理器. 在刚显示的数据读取(DataReader)源组件高级编辑器中,点击连接管理器标签.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 17 of 50点击列表标题连接管理器下面的空白区域(灰色区域),在这里,你会看到你在第一 步中添加的连接管理器. 选择这个连接管理器. 接下来,点击组件属性标签打开数据读取组件(DataReader)属性.在这里,你会发 现它要求填写一个 SQLCommand(目前唯一空白的填充项). 点击它旁边的省略号按钮会显示一个文本编辑器,在那里面你可以写入 SQL 命令. 你可以直接写上下面这句 SQL 命令: SELECT CustomerID, CompanyName, Address, City, PostalCode FROM Customers 点击刷新按钮. 这个查询意思是让 DataReader 读取 5 列字段的数据.下图是从 SQL Server 2005 Management Studio 中得到的一个表数据示例.如果你能回想起来,上一章我们也用过同 样的这些字段列. 点击列映射标签. 打开的列映射页面中会显示 DataReader 输出的列. 在编辑器的最后一个标签"输入和输出属性"中,你可以从外部列,输出列和 DataReader 错误输出中添加或者删除项目.在本教程中,我们不做修改.到此为止,配置 DataReader 从 SQL Server 2005 数据库中提取五个字段列的工作就 完成了.(作者:Jayaram Krishnaswamy 译者:冯昀晖 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 18 of 50用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(下)第四步:为 SQL Server 数据转换组件设置字符映射 字符映射转换组件是在第一章中讲到的,但是在这里我们要体验一下它的转换功能. 转换组件处理接收到的文本字符串,输出为转换后的字符串.例如:在上面我们看到的图 片中,公司名是大小写混合的,使用转换组件后,我们会在数据写到 Excel 之前,把出现 在公司名这一列的所有字符转换为大写——例如:Alfreds Futterkiste 会转换为 ALFREDS FUTTERKISTE. 在工具箱的数据流转换组件组里选择字符映射数据流项,把它拖拽到数据流页面的设 计画布上. 在 DataReader 源组件上点击右键,在右键菜单项中点击添加路径. 在弹出显示的数据流窗口中,选择转换目标为字符映射.如下图所示:在上面的窗口中点击确定(OK),此时会显示下面的新窗口.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 19 of 50。

SSIS 简介

SSIS 简介

SSIS 简介SSIS首先是在1997年的SQL Server 7.0中引入的,当时它的名称为数据转换服务(DTS)。

SSIS属于ETL产品家族,ETL代表提取(Extraction)、转换(Transformation)和加载(Loading)。

现在,越来越多的企业都有数据仓库。

ETL是将来自OLTP数据库的数据定期加载到数据仓库中必不可少的工具。

在SQL Server的前两个版本—— SQL Server 7.0和SQL Server 2000中,SSIS主要集中于提取和加载。

通过使用SSIS,可以从任何数据源中提取数据以及将数据加载到任何数据源中。

在SQL Server 2005中,对SSIS进行了重新设计和改进。

SSIS提供控制流和数据流。

控制流也称为工作流或者任务流,它更像工作流,在工作流中每个组件都是一个任务。

这些任务是按预定义的顺序执行的。

在任务流中可能有分支。

当前任务的执行结果决定沿哪条分支前进。

数据流是新的概念。

数据流也称为流水线,主要解决数据转换的问题。

数据流由一组预定义的转换操作组成。

数据流的起点通常是数据源(源表);数据流的终点通常是数据的目的地(目标表)。

可以将数据流的执行认为是一个流水线的过程,在该过程中,每一行数据都是装配线中需要处理的零件,而每一个转换都是装配线中的处理单元。

图12-1显示了SSIS设计器。

可以通过启动 Business Intelligence Development Studio,然后创建一个Integration Services项目来调用SSIS设计器。

在左边有一个工具箱窗口。

工具箱窗口包含预定义的控制流任务和数据流转换。

中间的视图窗格包含4个视图:控制流、数据流、事件处理程序和包资源管理器。

控制流视图提供了一个设计环境,在这个设计环境中可以使用工具箱中与控制流相关的项来构建控制流。

数据流视图也提供了一个设计环境,在这个设计环境中可以使用工具箱中与数据流相关的项来构建数据流。

SSIS教程

SSIS教程

SQL Server Integration Services SSIS基础指南SQL Server Integration Services(SSIS)基础指南无论你是否计划将SQL Server数据库转换服务(DTS)包迁移到SQL Server集成服务(SSIS)或在SQL Server 2005里运行DTS包,都需要专家的一些建议。

这一指南主要是包括SSIS的相关基础知识、技巧帮助你进行SSIS调整,还介绍了SSIS有经验的一些用户的具体信息等等。

SQL Server 2008 SSIS新特征过去一些年来,SQL Server已经成为大型、包括所有企业的数据库包,尤其是外加了一些商业智能特性:Analysis Services、 DTS以及现在的SSIS(SQL Server Integration Services)。

有了SQL Server 2008,你就可以获取现成的开发工具(BIDS)管理工具(SSMS)、性能工具、数据仓储系统、商业智能和建立报告服务等等。

本文介绍了SQL Server 2008更好的、管理员和开发员更易于使用的性能;指出了数据集成和改进的脚本功能、数据分析以及数据流之间的存在的距离。

SQL Server 2008 Integration Services新特征(一)SQL Server 2008 Integration Services新特征(二)将DTS包迁移到SSIS如果你已经将数据迁移到SQL Server 2005、想暂缓将DTS包升级到SSIS,你该怎么做?在本篇技巧中,你将了解到如何在SQL Server 2005中编辑、维护甚至是开发现存的DTS包。

你还将了解到一些在使用SQL Server 2005 Upgrade Advisor方面的难题。

将SQL Server 2000 DTS包迁移到SSIS(一)将SQL Server 2000 DTS包迁移到SSIS(二)将SQL Server 2000 DTS包迁移到SSIS(三)在SSIS里运行DTS包你有没有在SQL Server 2000里运行的DTS包?你想让它在SQL Server 2005中也执行相同的工作吗?SQL Server Integration Services (SSIS)是SQL Server中最新的ETL工具。

ssis 开发步骤

ssis 开发步骤

SSIS 开发步骤什么是 SSIS?SSIS(SQL Server Integration Services)是微软的一款强大的ETL工具,用于数据抽取、转换和加载。

它可以从各种数据源提取数据,并将其转换为目标数据库或文件格式。

SSIS 提供了一个可视化的开发环境,使开发人员能够轻松地创建、调试和部署复杂的数据集成解决方案。

在本文中,我们将详细介绍使用 SSIS 进行开发的步骤。

步骤一:需求分析在开始使用 SSIS 进行开发之前,我们需要进行需求分析。

这包括确定以下内容:1.数据源:我们需要明确从哪些数据源中提取数据。

这可以是数据库、文件、Web服务等。

2.转换逻辑:我们需要定义如何转换提取的数据以满足目标系统的要求。

3.目标系统:我们需要确定将数据加载到哪个数据库或文件中。

通过仔细分析需求,我们可以确保开发过程顺利进行,并最终实现预期的结果。

步骤二:创建 SSIS 项目在需求分析完成后,我们可以开始创建 SSIS 项目。

以下是创建项目的步骤:1.打开 SQL Server 数据工具(SQL Server Data Tools)。

2.在“新建项目”对话框中,选择“Integrat ion Services 项目”模板。

3.输入项目名称和位置,然后单击“确定”。

这将创建一个空的 SSIS 项目,我们可以在其中添加数据流任务、控制流任务和包配置等。

步骤三:设计数据流任务数据流任务是 SSIS 中最常用的任务类型之一。

它用于定义数据提取、转换和加载的逻辑。

以下是设计数据流任务的步骤:1.在 SSIS 项目中,打开“控制流”选项卡。

2.拖动“数据流任务”组件到设计面板上。

3.右键单击“数据流任务”,选择“编辑”。

在数据流任务编辑器中,我们可以执行以下操作:1.添加源组件:右键单击设计面板上的空白区域,选择“添加源”菜单。

根据需求选择适当的源组件,如OLE DB Source、Flat File Source等。

SSIS即dtsx包的过程-说明

SSIS即dtsx包的过程-说明

制作SSIS即dtsx包的过程1.首先在控制流中拖入“执行sql任务”控件
2.拖入“数据流”任务控件(如上图)
3.在上图“连接管理器”中单击右键选择
“新建OLE DB 连接(N)…”建立数据库连接
5.如上图,单击“新建平面文件连接”建立平面文件连接建好后如下图
6.使“执行sql 任务”建立连接,单击右键,“编辑”
一个键头拖到“数据流任务”上即可
8,好了,完成了第一步,现在转到数据流页面,拖入“平面文件源”和“OLE DB
目标”二个控件如下如
9.把“平面文件源”和“OLE DB目标”连接起来,操作也和上面一样,在“平面文件源”处有一绿线键头,拖到“OLE DB目标”上即可
10.最主要的一处到了,在“OLEDB目标“处单击右键选择编辑进入下面一个界面,在表或视图的名称中选择你要插入的表.后单击左边的“映射”进入下一界面。

11.进入映射界面:让文件文件中的字段和数据库表中的字段一一对应,确定即可
12.只要找到dtsx文件执行就可以,还可以改名,呵呵。

COPY到任何一处都可以,但文件名字必须一样,文件路径不能改动。

利用SQL Server的DTS操作EXCEL、Access等数据表的导入导出

利用SQL Server的DTS操作EXCEL、Access等数据表的导入导出

利用SQL Server的DTS操作EXCEL、Access等数据表的导入导出- -熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。

在Transact-SQL语句中,我们主要使用OpenDataSource 函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。

利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:一、SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤:1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation2Services(数据转换服务),然后选择czdImport Data(导入数据)。

3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。

4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。

5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。

6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。

下一步,完成。

Transact-SQL语句进行导入导出:1. 在SQL SERVER里查询access数据:-- ======================================================SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名-------------------------------------------------------------------------------------------------2. 将access导入SQL server-- ====================================================== 在SQL SERVER 里运行:SELECT *INTO newtableFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名------------------------------------------------------------------------------------------------- 3. 将SQL SERVER表里的数据插入到Access表中-- ====================================================== 在SQL SERVER 里运行:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名(列名1,列名2)select 列名1,列名2 from sql表实例:insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\db.mdb';'admin';'', Test)select id,name from TestINSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)SELECT *FROM sqltablename-------------------------------------------------------------------------------------------------二、SQL SERVER 和EXCEL的数据导入导出1、在SQL SERVER里查询Excel数据:-- ======================================================SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 下面是个查询的示例,它通过用于Jet 的OLE DB 提供程序查询Excel 电子表格。

SSIS入门与进阶

SSIS入门与进阶

SSIS⼊门与进阶SSIS是从MS SQL 2005开始引⼊的,实际上是DTS的马甲,是SQL Server Integration Service的缩写。

DTS也好,SSIS也罢,都是ETL(Extract Transform Load)⼯具,⼀般⽤来导⼊数据到数据库。

SSIS⽐普通的ETL更进⼀步,它是可视化的,⽤Visual Studio来开发,包⽂件(*.dtsx)采⽤的是XML格式。

跟Office2007+系列⽂档扩展名⼀样,都是x,代表xml格式,但他没有压缩成zip⽂件罢了。

⾸先使⽤SSIS创建⼀个简单的Integration Services Project: File->New->Project->Business Intellegence Projects->Integration Services Project(新建项⽬1)(新建项⽬2)添加⼀个Foreach Loop Container, 双击这个Foreach Loop Container,点击左边的Collection,选择来源⽂件⽬录(Folder),输⼊⽂件类型(Files)。

点击Variable Mappings,点击New Variable,在Name输⼊变量名称。

这个变量是⽬录循环中每个⽂件的值,稍后会⽤在每个⽂件的处理中。

再在⾥⾯添加⼀个Data Flow Task,双击这个Data Flow Task,进⼊了Data Flow标签(Control Flow右边)。

因为原始⽂件是从测量表读取出来然后写到CSV⽂件的,所以我们使⽤Flat File Source(就是⽂本⽂件,CSV⽂件也属于这类)。

双击Flat File Source,Flat File connection manager,点右边的New新建⼀个⽂本⽂件连接,给连接⼀个名字,选择⼀个例⼦⽂件,按照你的情况输⼊header rows to skip(跳过头列),如果第⼀列是列名称,你应该输⼊1。

SSIS教程

SSIS教程
数据加载
将清洗和转换后的数据加载到目标数据库中,确保数据的完整性和一 致性。
错误处理
在数据抽取、清洗、转换和加载过程中,设置错误处理机制,如错误 日志记录、数据回滚等。
操作步骤详解
设计数据源
根据数据源情况,设计数据源 连接和数据抽取方式。
配置目标数据库
配置目标数据库连接和数据加 载方式。
创建SSIS项目
05 包管理和部署策 略
包管理概述
包的定义
在SSIS中,包是一个有组织的集合,包含了实现特定ETL(提取、 转换、加载)任务所需的所有数据流和控制流元素。
包的作用
包是实现数据集成、数据迁移、数据清洗等任务的基本单位,可以 独立运行或与其他包组合运行。
包管理的重要性
有效的包管理可以确保包的版本控制、安全性、可重用性和可维护 性。
感谢观看
在Visual Studio中创建SSIS项 目,并配置项目属性。
设计数据流任务
通过SSIS工具箱中的组件,设 计数据流任务,实现数据的清 洗、转换和加载。
调试和运行包
在Visual Studio中调试和运行 SSIS包,查看数据抽取、清洗 、转换和加载的结果。
问题讨论与拓展
性能优化
针对大数据量和高并发的场景,讨论如何 优化SSIS包的性能,如使用并行处理、增
部署策略选择
文件系统部署
将包存储在文件系统中,便于手动管理和迁移,但缺乏安全性和版本控制。
SQL Server部署
将包存储在SQL Server数据库中,提供更强的安全性和版本控制,便于集中管理和自 动化部署。
Integration Services目录部署
使用SSISDB数据库存储和管理包,提供完整的包管理功能,包括版本控制、安全性、 执行和监控等。

SSIS 各种工作介绍(一)

SSIS 各种工作介绍(一)

本電子刊物之所載標誌名稱分屬各該公SSIS 各種工作介紹(一)作 者:胡百敬 審 稿:楊先民 文章編號:S060505105 出刊日期:2006/05/29前言SSIS 提供較 DTS 更為豐富的工作(Task),讓你在處理資料時可以同時 完成輔助的相關工作,例如下載/上傳檔案、寄送電子郵件、處理Cube 等等。

筆者將在接下來的幾期專欄中,為你介紹幾個常用的 SSIS 工作。

在本期專欄中,首先探討如何透過 SSIS 提供的「執行 SQL 工作」存 取 SQL Server 。

執行 SQL 工作「執行 SQL 工作」可以用來執行一句以上的 SQL 語法或呼叫預存程序,發揮 SQL 語法處理資料的強大能力,在資料庫內整理資料。

大略用途如下: z呼叫預存程序或執行 SQL 語法,以清除資料表中過期的資料,為新增資料做準備。

或是透過連結伺服器(Linked Server)的方式,直接撰寫維護資料的語法,更新來源或目的端伺服器內資料。

z 建立、改變和卸除資料庫物件,例如資料表、檢視或預存程序等。

z將 SQL 查詢語法傳回的資料集(Rowset)儲存到變數中,供其他工作使用。

你可以利用下列方式設定「執行 SQL 工作」:指定存取資料庫的連接管理員類型「執行 SQL 工作」可使用不同類型的「連接管理員」,以連接到執行 SQL語法或預存程序的資料來源。

選擇連接管理員非常重要,因為它會影響到 SQL 語法搭配變數的方式,以及語法執行完畢後,回傳結果的物件格式。

此工作可使用下列的連接類型:z EXCELz OLEDBz ODBCz ADOz z SQL Server Mobile不同連接類型,輸入參數與回傳結果不同,此部分我們在後面的文章會繼續介紹。

為了測試不同的參數傳遞方式與回傳結果,我們設計的範例如圖1所示:圖1:各種執行 SQL 語法以及取回結果的方式。

首先做個簡單練習,在 SSIS 設計師加入一個「執行 SQL 工作」,並透過下拉選單選擇連接類型為「OLE DB」,並建立對 AdventureWorks 範例資料庫的連線。

转载SSIS中的容器和数据流—数据转换(Transformations)

转载SSIS中的容器和数据流—数据转换(Transformations)

转载SSIS中的容器和数据流—数据转换(Transformations)对数据流来说按照需求将数据转换成需要的格式是数据操作中的⼀个关键的步骤。

例如想要得到聚合排序后的运算结果,转换可以实现这种操作。

和SQL Server 2000 DTS完全不同,这些操作不需要编写script,所有的运算都在内存中进⾏。

添加⼀个数据转换之后,数据直接转换成想要的格式然后传递给下⼀个步骤,由于是在内存中完成运算操作的,不需要在数据库中建⽴对象来存储这些操作函数。

但是当需要处理⼤批量的数据时,还是需要建⽴存储表或其他对象来处理的。

在data flow⾯板中拖放⼀个转换,⿏标点住然后拖放绿⾊连线到⼀个⽬的Destination,然后就可以双击并编辑这个转换。

这部分将从最基本的功能开始讲解转换,下⼀部分将会做⼀些实验操作,并在实际盛传环境中来使⽤它。

还有⼀些更⾼级的转换着这⾥不会讲解,把他们放在下⼀个随笔中讲解,这些⾼级的转换包括:修改Dimension透视和逆透视Pivot and Unpivot⾏数导⼊导出列术语提取和查找模糊分组和匹配数据挖掘OLE DB命令其中⼀些转换不是很复杂,只是在SSIS没有UI⽀持,要想使⽤它们需要使⽤Visual Studio中的⾼级编辑器。

聚合Aggregate聚合转换可以像T-SQL中的函数GROUP BY, Average, Minimum, Maximum, 和 Count⼀样对数据进⾏聚合运算。

在图4-13中可以看到数据以OrderDate,ProductLine分组,对LineTotal做求和操作。

这样产⽣了三列新的数据,供其他操作。

图4-16在聚合操作编辑器Aggregate Transformation Editor,⾸先选择需要进⾏聚合操作的列,然后选中的列将会出现在下⾯的⼀个表⾥⾯在Output Alias列⾥⾯输⼊输出列的别名。

例如如果想输出每个订单的总量,这⾥修改为SubTotal,这样可以更容易的识别出这⼀列的⽬的。

SSIS 各种工作介绍(八)

SSIS 各种工作介绍(八)

本電子刊物之所載標誌名稱分屬各該公SSIS 各種工作介紹(八)作 者:胡百敬 審 稿:張智凱 文章編號:S061005601 出刊日期:2006/10/02前言在上一期專欄中,我們已經介紹了「XML 工作」所提供的「合併」、「驗證」、「XPath 」和「XSLT 」等四種作業。

在本期專欄中,我們換另外的工作:「執行封裝工作」、「執行 DTS 2000 封裝工作」來玩玩。

執行封裝工作「執行封裝工作」可將其他封裝納入工作流程一起執行,讓封裝的設計撰寫如同一般模組化程式。

而我們一般稱執行其他封裝的封裝為父封裝,被呼叫的封裝則稱為子封裝。

多層次的封裝執行,其可能用途如下: 細分複雜的封裝工作流程。

讓你將工作流程分解成多個封裝,以方便讀取、測試和維護。

獨立的單位工作可以封裝到個別的封裝,並加入父封裝的交易管理。

例如,父封裝執行附帶封裝,並根據子封裝的成功或失敗認可或回復交易。

同時,讓我們可以透過參數傳遞,重用穩固而有效率的基礎資料轉換工作。

「執行封裝工作」可執行儲存在SQL Server msdb 資料庫中或檔案系統上的封裝。

存取封裝時,會分別使用「OLE DB 連接管理員」連接到SQL Server ,或透過「檔案連接管理員」存取檔案系統。

如果選擇的是儲存在檔案系統中的封裝,就必須指定封裝的檔案名稱與路徑位置。

「執行封裝工作」也可執行資料庫維護計劃,資料庫維護計劃與SSIS 封裝類似,但只能包含資料庫維護工作,而且永遠儲存在msdb 中。

當你在下文表1的Location 屬性選擇SQL Server 後,就可以在PackageName 屬性點選「…」按紐,透過「選取封裝」對話窗,選擇在「Maintenance Plans 」目錄下的資料庫維護計劃封裝。

SSIS的「執行封裝工作」提供以下整合封裝執行之特色:延伸交易:父封裝使用的交易可延伸至子封裝;因此,兩者執行的工作能一起認可(Commit)或回復(Rollback)。

SSAS&SSRS 基本介绍

SSAS&SSRS  基本介绍

24
Logo
Data Quality Testing
Source Data warehouse Data warehouse Cubes Testing categories included in data validation process:
DW/Cube structure validation, including:
21
Logo PerformancePoint Dashboards / Scorecards
Logo
Maps Reporting
Logo
议程
架构介绍 SSIS 介绍 SSAS 介绍 SSRS 介绍 Data Testing Data Mining
Chinasoft Confidential
Thanks! Q&A
Chinasoft Confidentiion (Check if exists and correct)
– – DB: DB name, Table, View, Column, Data Type, SP, Function, SQL Job Cube: catalog, Measures, Dimensions, Hierarchy
• Data profiling validation (Check if each object is reasonable) • Relationships validation • Default values check
Data accuracy check, ensure:
• • • • No extra data was imported into our DW No required data was missed Data logic check Data aggregation with each dimension

SQL Server Integration Service入门手册

SQL Server Integration Service入门手册

SSIS简介开发SQL Server 2005 BI 应用,主要包括三个主要部分: SQL Server 集成服务 (SQL Server Integration Services – SSIS) , SQL Server 报表服务 (SQL Server Reporting Services) 和 SQL Server Analysis Services (SSAS). 本文将由通过大量实例由浅入深地介绍通过 SQL Server Business Intelligence Development Studio (BIDS) 构建 SSIS 应用程序的方法和技巧。

SSIS 的由来很多人都熟悉SQL Server 的命令行程序 Bulk Copy Program (BCP),在SQL Server 7.0发布之前,这似乎是从SQL Server导入导出数据的主要方法。

从SQL Server 7.0 开始,一个全新的内置系统工具 DTS被增加到了SQL Server 中,该工具通过建立 DTS 程序包(Package)的方法用来进行不同数据源之间的数据转换和导入导出数据。

DTS 与BCP 程序行相比,具有几个明显的特点:DTS 可以将许多内置的任务 (Task) 与数据转换步骤(Steps)相连,在基于OLEDB下的不同的数据源之间进行各种复杂的数据转化;能够通过脚本(Script)自定义复杂的数据转换操作;以通过设置SQL Server Agent 自动化DTS 包的运行;在其他应用程序中通过调用DTS 对象,实现对DTS Package 的访问等。

Microsoft 在SQL Server 2005 中又对DTS 进行了重大的改进,使一个单纯的ETL工具,变成了具有企业级开发能力的ETL平台,而不仅仅是把名字从DTS 改为了SSIS。

SSIS 的主要特点1.SSIS 不仅仅用来简单的传输和转换数据,还可以用来对建立BusinessIntelligence 平台的数据进行集成、转移、扩展、过滤和修正。

SQL Server 数据转换

SQL Server 数据转换

第7 章SQL Server 数据转换SQL Server提供了一种很容易在SQL Server数据库或者非SQL Server数据库和另外一个SQL Server 数据库间转换数据的功能,该功能被称为数据转换服务或数据传输服务(Data Transform Services,DTS)。

DTS提供了许多传输数据的工具,如表7-1所示。

不同的工具适用于不同的情况。

表7-1 DTS提供的传输数据的工具工具描述DTS导入/导出向导该向导用于将数据复制到SQL Server实例和从该实例中复制数据,以及将转换映射到数据DTS设计器该图形工具用于生成带有工作流和事件驱动逻辑的复杂包,也可以使用DTS设计器编辑和自定义用DTS导入/导出向导创建的包DTS和SQL Server 这些选项可用于从SQL Server企业管理器中操作包和访问包信息企业管理器DTS包执行实用工具包括以下实用工具:DTS运行实用工具(用于调度和运行包的对话框)和disrun实用工具(用于运行包的命令提示实用工具)DTS查询设计器该图形工具用于在DTS生成查询在DTS中,使用OLE DB提供者(OLE DB Provider)在不同数据库之间传输和转换数据。

通过OLE DB 提供者可以访问关系和非关系型数据。

针对每种数据源,都有相应的OLE DB提供者。

这些数据源包括文本文件、ODBC数据源(例如Oracle数据库)、OLE DB数据源(例如其他SQL Server实例)、ASCII文本文件和Excel电子表格。

此外,SQL Server复制使数据得以在整个企业内发布,在各个位置之间复制以及自动同步不同数据副本之间的更改。

DTS处理数据的过程如图7-1所示。

图7-1 DTS处理数据的过程第1节导入/导出一、导入/导出基本概念导入导出是SQL Server数据库系统与外部进行数据交换的操作。

导入数据是从外部其他系统数据源中检索数据,并将数据插入到SQL Server表的过程,例如将Excel表中数据引入到SQL Server数据库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


經由事件觸發的特殊流程 (例如:OnError、 OnPostExecute) 可以簡單地寄發一封 e-mail 或是複雜地執 行另外一段 dataflow task 以處理錯誤的資 料紀錄 自訂的 components 從基礎類別自動繼承 相關的事件 (OnError, OnWarning…)
Execute SQL
Derive Column
Multi-cast
Data Flow Task
SQL Server Flat File
工作流程

流程導向ห้องสมุดไป่ตู้

前置條件(成功,失敗,或完成)

前置條件可以做 AND 和 OR 等布林運算

從環境輸入參數 File System Task、Execute SQL Task、Send Mail Task、Data Flow Task…

豐富的功能


參考資源


Package 屬性設定
Demo
SSIS Security 概觀
Package Protection Level 屬性
對具機密性的資料 加密還是一般文字 存放
SQL DB 角色
•對存放 Package 的 MSDB 具有 Reader 和 Writer roles
作業系統 B
權限
•對於存放 Package 的檔案和目錄有存 取權限
大綱

概覽 Business Intelligence Development Studio 與設計 SSIS 封裝 封裝的安裝與執行
Business Intelligence Development Studio

Package 編輯環境



屬性視窗(Properties) Toolbox Pop-up editor windows Work Flow, Data Flow, Event Handlers
可以透過 DTS Migration Wizard 將舊的封裝轉換 到新的 SSIS

SSIS 架構
提供新的資料倉儲處理架構(1/2)
傳統的資料倉儲載入資料方式
在以往的運作模式下,資料整合的流程大多只做簡單的轉換與載入的工作 在資料庫伺服器內執行彙總、排序等其他工作… …在做上述的整理資料動作的同時會與一般使用者查詢搶資源,互相耗損系統效能 這種解決方案無法完成大規模、多重且複雜的彙總
Demo
工作流程
資料流程



特殊的工作流程:Data Flow Task 資料處理導向,管線流程的概念(pipeline) 處理資料 建立或使用資料紀錄 可以觀察資料變化的過程 Source Adapter、Transform、Destination Adapter
Demo
資料流程
事件處理流程

設計環境



Package Browser 變數,資料連線設定 Output, Watch
SSIS 管線(Plumbing)…
控制流程(Control Flow)
FTP Task Send Mail
Loop
資料流程(Data Flow) Flat File Source Merge SQL Data Source


支援工具

豐富的 per-package Logging 透過 SQL Management Studio 監控正 在執行的 packages 並組織管理 packages

Checkpoint - Restartability
SSIS 相關工具
Installer File set 佈署 BI Studio Deployment

Business Intelligence Studio (Visual Studio) 為 SQL Server 2005 之前版本 packages 提供的 Migration wizard 整合版本控管 (VSS)



佈署/執行

複製 packages 的佈署工具(dtutil.exe) 命令列與使用者介面的執行工具 (dtexec.exe 和 dtexecui.exe) 彈性的設定選項
A

Package 可以透過 Package Protection level property 屬性設定加解密 (A) 若存放在 MSDB,再透過 SQL Database roles 限制可以存取者的角色 (B) 透過作業系統設定對於目錄和 package 檔案設定存取權限
Demo
設定 Package 加解密
相關設定

Task Task Loop Task
Package

CheckpointFileName:路 徑\檔名 CheckpointUsage:If Exists 或Always SaveCheckpoints:True FailPackageOnFailure: True (各 Task 階層)





SSIS 與 DTS 的差異概觀

將資料流程與工作流程分開 以更豐富,更細緻功能的 Dataflow 工作取代資料 轉換工作 以容器工作提供迴圈或執行順序 以變數取代動態屬性工作


改以 XML 的格式存放在 SQL Server 或檔案系統 上,更方便做 Source Control
提供新的資料倉儲處理架構(2/2)
透過 SQL Server Integration Services 載入資料到資料倉儲
現在,透過 SQL Server Integration Services 可以同時完成整合、彙總、排序…等諸多 資料處理動作,然後在載入到資料庫 讓資料庫伺服器可以專注在回答使用者的查詢 透過 64-位元版本的引擎,可以讓此方案處理大規模資料量且複雜的彙總運算

Component 的建立者可以自訂他的事件(例如: OnFTPFileFinishedCopy)
事件處理流程
Demo
大綱

概覽 Business Intelligence Development Studio 與設計 SSIS 封裝 封裝的安裝與執行
SSIS 生命週期相關的工具

設計 SSIS Package
Import Export Wizard
packages
SSIS packages
Dtutil.exe 執行 Dtexec.exe SSIS Service Dtexecui.exe 檢視當下的執行狀況與 import\export
Mgt Studio
彈性的設定



設定 Package 內的屬性變更,修改 Package 的執行方式,但不需要重新設計 編輯 Package (例如:載入資料的檔名) 相關的設定可以存放在 SQL Server 內的資 料表、XML 檔案、註冊機碼(Registry key)、 作業系統環境變數、Parent package 每個 Package 都可以設定一個以上的 configuration sets,且可以存放在不同的來 源
SQL Server 2005 SSIS資料 轉換工具介紹(原DTS)
大綱

概覽 Business Intelligence Development Studio 與設計 SSIS 封裝 封裝的安裝與執行
SQL Server Integration Services 是什麼?

全新的 SQL Server 商業智慧 應用程式 Data Transformation Services 的接續版本 高效能的資料整合平台 全新用 .NET 撰寫的架構,更 豐富的功能 完善的資料檢視、單步除錯與 錯誤處理 透過 pipeline 可以更豐富地加 值資料,且全部在記憶體內完 成,不需要中介資料表 以 Package 為執行單位,而非 Project
SQL Management Studio

存取 SSIS service 監控正在執行的 packages 管理存放 package 的架構 Ad hoc 執行 package
Demo
以 SQL Management Studio 管理 SSIS
從前一次執行的錯誤點重新啟動

從發生錯誤的點重新啟動 執行 Package

可重新啟動的邊界

Data Flow
Transform

在執行 Package 可以調整 CheckpointUsage 屬性, 設定當下的執行是否要參 照先前留下的
Task
Transform
Demo
重新執行 Package 屬性設定
結論

大幅提升效率 !!!

相較 DTS 效率提升 600% 雖然資料轉換的邏輯複雜,資料量龐大,依然可以有很好的效能,尤其在 多顆 CPU 的機器上可以有效執行多執行緒的工作 更多預建的資料存取介面、轉換功能以及輔助工作,可以大幅減少所需撰 寫的程式 可延升的物件模型,提供客製化的能力 大幅提升生產力的設計環境,整合的除錯與部署 與 BI 平台 (IS-AS-RS) 整合在一起
相关文档
最新文档