SQL Server可写脚本和编程扩展SSIS包

微软的SQL Server 2005中用来替代数据传输服务(DTS)的SQL Server综合服务(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的方式,无论是脚本还是编程,都是根据你的需求和你的能力来决定的。因为你可以使用两种方式——即使在同一时间!——你都可以不用费很多力气。你还可以根据需要进行修正和匹配。

时间: 2024-12-31 10:02:46

SQL Server可写脚本和编程扩展SSIS包的相关文章

SQL Server 2005 Analysis Services数据挖掘算法扩展方法

本文是对英文原文SQL Server Data Mining Managed Plug-In Algorithms Tutorial的部分翻译及整理,主要是描述SSAS数据挖掘算法的基本扩展方法和开发过程.本文的内容只是原文的一部分,如果想了解更多信息可以下载原文.英文原文在本文附件中下载. SSAS为我们提供了九种数据挖掘算法,但是在应用中我们需要根据实际问题设计适当的算法,这个时候就需要扩展SSAS,使它能应用更多的算法,SSAS有比较好的可扩展性,它提供了一个完整的机制来进行扩展,只要继承

SQL Server自动备份脚本

以下脚本执行 SQL Server 中某一数据库全备份,并将备份文件传至另一机器.备份文件命名规则:数据库名_时间戳.BAK. 执行环境: windows 2003 server SQL Server 2000 @ECHO off REM Backup Database Script Log Files SET dbbak_dir=e:testdbbak if not exist %dbbak_dir% mkdir %dbbak_dir% REM Backup Database Name SET

SQL Server 2008R2编写脚本时智能提示功能丢失的处理方法_mssql2008

SQL Server 2008R2中增加了新的智能提示的功能简化了输入,非常方便.但突然有一天智能提示没有了,好郁闷! 折腾了半天终于将智能提示找回来了,下面是我解决本问题的思路: 1.查看工具选项中Enable Intellisense是否打开? 选择Tools-->Options打开选项页面,依次展开Text Editor-->Transact-SQL-->IntelliSense显示如下图所示的配置页面,检查是否勾选了Enable IntelliSense选项.注意修改配置后要打开

JSP中使用JDBC访问SQL Server 2008数据库示例_JSP编程

由JDBC驱动直接访问数据库 优点:100% Java,快又可跨平台 缺点:访问不同的数据库需要下载专用的JDBC驱动 (1)下载对应数据库版本的jdbc驱动并安装,注意安装后的得到的三个文件msbase.jar,mssqlserver.jar,msutil.jar,将其拷贝到jsp项目的WEB-INF/lib下面,也拷贝到Tomcat安装目录的lib下面,没有具体测试,应该和配置文件有关系. (2)数据源,不需要 (3)配置文件,不需要 (4)写JSP文件测试 <%@ page content

移动Sql Server数据库的脚本代码

注意事项:这个脚本只有2个参数需要输入,即:目标数据库名字和目标目录 例1  代码如下 复制代码 USE master GO DECLARE     @DBName sysname,     @DestPath varchar(256) DECLARE @DB table(     name sysname,     physical_name sysname) BEGIN TRY SELECT     @DBName = 'TargetDatabaseName',   --input data

SQL Server下几个危险的扩展存储过程_MsSql

这些存储过程如下: sp_makewebtask xp_cmdshell xp_dirtree xp_fileexist xp_terminate_process sp_oamethod sp_oacreate xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumkeys xp_regenumvalues sp_add_job sp_addtask xp_regread xp_regwrite xp_readwebta

sql server 中去掉不安全的扩展存储过程

删除扩展存储过程:EXEC sp_dropextendedproc 'xp_cmdshell' 恢复删除的扩展存储过程:EXEC sp_addextendedproc xp_cmdshell, @dllname='xplog70.dll' xp_cmdShell -> xplog70.dll xp_dirtree  -> spstart.dll

SQL Server下几个危险的扩展存储过程

这些存储过程如下: sp_makewebtask xp_cmdshell xp_dirtree xp_fileexist xp_terminate_process sp_oamethod sp_oacreate xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumkeys xp_regenumvalues sp_add_job sp_addtask xp_regread xp_regwrite xp_readwebta

Sql Server 创建数据库脚本Create DATABASE_MsSql

Create DATABASE HappyRelaxDB on( NAME='HappyRelaxDB',FILENAME='D:\Sunny_Project\HappyRelaxPro\HappyRelaxDB.mdf') LOG ON(NAME='HappyRelaxDB_log',FILENAME='D:\Sunny_Project\HappyRelaxPro\HappyRelaxDB_log.ldf') GO 以上黄色标记的为需要更改的内容 以上是小编为您精心准备的的内容,在的博客.问答