Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > SSIS与开发
【标  题】:SSIS与开发
【关键字】:SSIS
【来  源】:http://blog.csdn.net/Zricepig/archive/2007/04/16/1567123.aspx

SSIS与开发

Your Ad Here

SSIS是SQL Server Intergration Service的缩写,是SQL  Server  2005才有的新成员,从名字可以看出是用来整合数据的,微软非常NB得把它归类到BI feature(商业智能)中。和上次的VSTO一样,其实SSIS并不是新东西,在SQL Server 2000甚至更早版本中,我们见过它的雏形--DTS。当年DTS的作用可以简单地认为是用来读写各种支持OLE DB的数据源中的数据,再简单一点就是用来在不同数据库之间复制数据。SSIS基本内容虽然也是如此,但是SSIS变得强大了很多。对于开发者来说, DTS顶多是一个工具,而SSIS演变成一套框架,框架提供了数据相关的控制流、数据转换、日志、变量、event、连接管理等基础设施。微软提供了基于 VS的可视化设计器,将这些基础设施方便地组合起来,就可以完成数据转换、集成的任务。SSIS的体系结构图在这里可以看到。

上面说的东西可能还有点不够具体,接下来说得具体一点。撇开日志啊,事件啊什么的不说,对于数据从一个数据源到另一个数据源转换的任务,至少需要知道源、目标、转换方法三类信息,三类信息经过某种组合可以完成比较复杂的任务,比如:源-->转换1-->转换2-->转换3-->目标,此时,上一个转换的输出就是下一个转换的输入。在SSIS里,每一个转换都对应一个Data Flow对象,将Data Flow对象经过某种逻辑串接起来,就可以完成上面那种转换任务。需要注意的是,源和目标都是特殊的Data Flow,源只有输出,而目标只有输入。

简单的转换,用Data Flow就能搞定,如果转换中涉及到分支啊,循环啊,还有一些与数据无关的操作,比如发送Email等等,Data Flow就完成不了了(从设计上来说,也不应该让Data Flow承载全部这些杂七杂八的功能)。这时候又来了一组对象--Control Flow。它完成上述“杂七杂八”的任务,Control Flow中有一个特殊对象,它能包含一些Data Flow对象,这样Control Flow就能干正事了。也就是说,Data Flow成为了Control Flow的一部分,而且是最重要的一部分--试想你整个任务都是些杂七杂八的工作,反而没有数据转换,这不是不务正业么?这一切的Flow,组合起来是一个任务,在SSIS里叫包(Package)。

上面说又有点琐碎了,总结一下。一个数据集成任务在SSIS里叫包,用户在需要完成某种数据集成任务的时候建立一个包,再通过创建Control Flow的组件/对象,并将它们连起来的方法,告诉SSIS这个任务的具体流程。这个流程中有一个或多个步骤是关于数据转换的,这时又需要通过建立Data Flow对象和连接这些对象来告诉SSIS到底如何做这个数据转换。这么说还是有点晕的话,再做一个类比。工作流大家都知道吧?Control Flow就相当于一个为数据集成特化的工作流,每一个步骤对应一个Control Flow的对象。而数据转换相关的步骤有点特殊,虽然它也是Control Flow对象,但它包含了一些Data Flow对象,用以描述/提供数据转换的具体算法。

SSIS经过上述机制,提供了一个强大的数据集成框架。问题又来了,强大是强大了,灵活是灵活了,但是易用性呢?不能指望每个用户都写程序组装这些Data Flow和Control Flow再扔给SSIS跑吧。万一别人不太会写程序呢?微软提供的解决方案是向导(Wizard)+可视化设计器的方式。向导封装了一些简单而普遍的数据集成任务,用户只需要回答一些问题,向导自动会生成好相应的包。对于高级一点的用户,SSIS的可视化设计器允许用户在图形解密那上通过拖拽生成和连接Data Flow和Control Flow。

下面稍微提一点关于定制开发的内容。SSIS确实提供了很多现成的、完善的Data Flow和Control Flow操作,但是如果客户想要把自己的逻辑嵌入到整个集成过程中呢?SSIS也提供了解决方法:制作继承自特定接口/类的类,并封装成.net assembly或者COM组件嵌入到Package中供SSIS runtime调用。

要想定制自己的Data Flow组件,用户需要继承自Microsoft.SQLServer.Dts.Pipeline.PipelineComponent,在这里可以找到详细的帮助。对于Control Flow,用户需要继承自Microsoft.SQLServer.Dts.Runtime.Task,在这里有详细帮助。当然,SSIS可供定制的东西不仅仅是这些,包括连接管理器、日志、For循环等等都是可以定制的。

对于Data Flow和Control Flow的定制有一些地方需要注意,首先是需要注意区分从基类继承的函数中哪些是在Design-time(设计时)被调用,那些是在Runtime(运行时)被调用。你需要考虑你的对象能够在可视化设计器中被正常的使用。另外注意事件、消息、进度等触发的机制--不是使用throw exception, 也不是delegate,而是通过调用传入参数componentEvents或events的相应方法完成。另外,Data Flow由于涉及到具体的数据转换,所以相关联的类及PipelineComponent本身的结构有点复杂。Control Flow就简单多了。

写了这么多,只是希望大家在能通过这篇文章,了解一下SSIS的大概。不要被MSDN那些官方化而形式化的语言弄得一头雾水。要是你被这篇文章搞得更加一头雾水~~~那~~~我也没办法了-_-

C#委托方法匿名的4种写法:【上一篇】
The report you requested requires further information. 一种解决方案:【下一篇】
【相关文章】
  • SnowPorgramerAssist 程序员助手
  • BI解决方案-实战SSIS的使用
  • 使用javassist动态注入代码
  • [下载]visual assist 10.3.1541 and crack download
  • Visual Assist X 功能一览
  • Sql2005如何用dtexec运行ssis(DTS)包
  • Visual Assist X 破解报告[ZZ]
  • Javasssist初探(需要对Java的ClassLoader机制有一些了解)
  • SSIS处理导入数据时, 存在的更新, 不存在的插入
  • 一起学习SSIS
  • 【随机文章】
  • 用设计模式固化你的C#程序(5-2)
  • 如何创建Java存储过程
  • 另类.NET编程语言之旅
  • SQL Injection(四)――怎样防范SQL Injection
  • 加了颜色和字体的时间程序
  • 用主场中的按钮控制所有MC的停止与播放
  • 常用js验证
  • 用VC++制作QQ自动登陆软件
  • 关于指针和内存的几个问题
  • FreeBSD连载(19):检查硬盘调整文件系统的目录结构
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.