MS SQL可写脚本和编程的扩展SSIS包
2007-11-11 11:56:04 来源:WEB开发网微软的sql server(WINDOWS平台上强大的数据库平台) 2005中用来替代数据传输服务(DTS)的sql server(WINDOWS平台上强大的数据库平台)综合服务(SSIS),包含了很多工具用于导入数据并将其转换为有意义的信息,而不仅仅是被动的导入。但是还有一点要注意的是,你会发现这个新的SSIS工具有时候并不能完全覆盖你要做的所有事情。
因此,微软提供了两种基本方法来扩展SSIS的功能。一种方法对那些没有很多编程经验,或者是不需要编写复杂程序的人们来说相对简单;另一种方法就是复杂的,它可以让喜欢挑战的程序员深入SSIS,对其进行很大程度上的扩展。
简单方式:脚本
我们中的大多数人都在某种程度上至少接触过脚本,SSIS通过在SSIS包中使用VB .NET来为程序员提供编写脚本动作的功能。脚本的范围,与客户项目相比,是十分小并且集中的;那是在你需要在现有的包允许或者已经完成的范围内多少做些修改的时候使用的。
在SSIS包里面,有两个元素是你可以用来添加脚本的:Script Task(在综合服务设计应用程序的控制流窗口中)和Script Component(在数据流窗口中)。它们俩的应用环境稍微有些不同。
脚本任务(Script Task)是你用来在包里面实现一般目的的流控制的——它比脚本组件(Script Component)更加全局化,功能更强大,但是也复杂得多。它在包的数据流之外运行,不能被数据流的工作方式约束,虽然脚本任务通常都是只有包被触发的情况下才运行(虽然你可以构建在异常里面)。任务也支持断点和调试,这在你编写了比较精细的具有控制逻辑或者完成某类决策制订的脚本的时候比较有用。关于脚本任务的一个例子就是查询活动目录,寻找一些关于数据的信息,或者是与另外一个数据仓库对话——都是在运行包之前。
脚本组件更加贴近数据流工作的方式。脚本组件不是在整个包中之运行一次,而是它的主要处理为每个需要处理的数据行运行一次。脚本组件有三个比较基本的运行环境:数据源、数据转换,或者数据目标。组件的交互性也比较小——它并不支持脚本任务支持的那种类型的调试,这是其一。使用脚本组件的大多数情况是类似一行接一行的转换,构建客户ODBC目标,或者是不能通过SSIS本地函数处理的不重要的错误处理或者转换动作。
高级方式:对客户对象编程
虽然SSIS包里面的脚本很强大,有时候它仍然无法完成某些任务。在一些情况下,你可能需要从头编写(或者其他人编写)一个客户 SSIS 扩展。这不是轻松完成的事情;它需要你从根本上完全理解编程。但是对于客户对象,它可能会以某种方式是使用SSIS,但是这方式绝对不是简单的自动化任务。
例如,如果你的数据源不支持任何现有的SSIS转换(例如,一些古怪的不再被制造厂商支持的私有数据源),你可以编写客户连接管理对象来允许像在本地那样使用这个数据。同样,你可以创建客户任务,日志提供商,或者是通过SSIS实现的带有同样的编程库的数据流组件。
以上谈到的每一种类型都可以作为SSIS支持的语言中的基本类、属性和方法集使用:Visual Basic, C#, C++, J# 和Jscript。C++, C# 和VB更容易产生最好的结果,因为在这些情况下它们在更大程度上被开发人员和供应商支持。想法就是你所使用的语言不应该成为你的障碍;它们都可以插入到同一个外部编程接口。你还可以为客户对象创建用户接口,通过标准的Windows窗体,无论是否需要它们。
一个极端强大的此类例子就是,你可以通过SSIS客户对象创建可定制的前端调查装置 。我们说,如果你想要创建一组程序类来为集合中的每个对象集执行任务,例如,数据库中的一组表。如果你想要在很广泛的范围内实现这样的一个动作,并且不需要每次都重新发明一次轮子,这就是一中最好的实现方式。当你对一些新类型的数据(例如上面例子中提到的)创建客户连接管理器,并且想要在上面创建客户前端动作的时候,它就特别有用处了。
结论
你扩展SSIS的方式,无论是脚本还是编程,都是根据你的需求和你的能力来决定的。因为你可以使用两种方式——即使在同一时间!——你都可以不用费很多力气。你还可以根据需要进行修正和匹配。
更多精彩
赞助商链接