编程开发 > MSSQL > 文章内容

SQLServer可写脚本和编程扩展SSIS包

2011-5-14编辑:lily

          微软的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本地函数处理的不重要的错误处理或者转换动作。

注意这里产品区域的大小。我定义它的大小为CHAR(150)来强调数据文件的增长级数,这样在我接下来的实例中将更容易解释清楚快照是如何工作的。

现在既然我已经有了一个源数据库,现在我装载一些数据来扩展数据文件的大小位。如此,使用上面的脚本来创建销售历史表。

以下为引用的内容:

USE SourceDatabase
GO
IF OBJECT_ID('SalesHistory')>0      DROP TABLE SalesHistory
GO
CREATE TABLE SalesHistory
(      SaleID INT IDENTITY(1,1),    
 Product CHAR(150),       SaleDate DATETIME,      
SalePrice MONEY
)

DECLARE @i INT
SET @i = 1
WHILE (@i <=10000)

BEGIN      INSERT INTO SalesHistory      (Product, SaleDate, SalePrice)     
VALUES      ('Computer', DATEADD(mm, @i, '3/11/1919'),
DATEPART(ms, GETDATE()) + (@i + 57) )

      INSERT INTO SalesHistory      (Product, SaleDate, SalePrice)     
VALUES      ('BigScreen', DATEADD(mm, @i, '3/11/1927'),
DATEPART(ms, GETDATE()) + (@i + 13) )

      INSERT INTO SalesHistory      (Product, SaleDate, SalePrice)     
VALUES      ('PoolTable', DATEADD(mm, @i, '3/11/1908'),
DATEPART(ms, GETDATE()) + (@i + 29) )

      SET @i = @i + 1

END
GO

 
一旦你运行以下的脚本,就可以来操纵数据库文件储存的地方了。在这个实例上面,我将这些文件放在C:SQL Server文件夹下。在我的计算机上,当数据库被初始化创建时数据文件的大小是1,216KB,数据装载后的大小是7,360KB。既然源数据库有一些数据已经在里面了,所以我们现在就能建立一个快照了。使用以下的脚本来建立数据库快照。

以下为引用的内容:

CREATE DATABASE SnapshotDatabase

ON

(

NAME = 'SourceDatabase_Data',

FILENAME = 'C:SQLServerSnapshotDatabase.mdf'

) AS SNAPSHOT OF SourceDatabase

VB应用程序访问SQLServer的常用方法

热点推荐

登录注册
触屏版电脑版网站地图