日期:2013-02-01  浏览次数:20450 次

  SSIS(SQL Server Integration Service)是在SQL Server2000的DTS的基础上做的一个非常大的改进的新工具。采用了数据流和控制流分离,设计和部署分离的架构设计,引入了更多新的转换,终于向着专业级的ETL工具迈了一大部。

  由于绝对DTS的改进非常大,开发和使用SSIS也就显得比DTS略显复杂。但是对于大型项目,实际上SSIS比DTS要简单的多。

  本文通过一个最简单的例子,演示了开发和部署一个SSIS Package的整个过程。

  1.开发

  SQL Server2005对于客户端的管理和开发工具做了高度的集成。对于数据库的管理和T-SQL开发,使用新的SQL Server Management Studio;对于SSIS,SSRS(SQL Server Reporting Service),SSAS(SQL Server Analysis Service)的开发则使用SQL Server Business Intelligence Development Studio。

  打开Business Intelligence Development Studio,新建一个project,模板选择Integration Services Project,项目名SSISTEST。

  选择Data Flow标签页,先建一个新的数据流。从Data Flow Sources中选择一种源,这里我们使用SQL Server数据库来做为数据来源,所以选择OLE DB Source,按下左键拖到任务区。这时由于该source还没有设置连接信息,所以图标上有一个红叉,表示其形状是Invalid的。

  没有关系,我们先新建一个连接。在Connect Managers任务区右击,选择New OLE DB Connect,然后点New设置要连接的数据库即可。

  回到数据流任务区,双击OLE DB Source,在弹出的窗口中选择对应的connect,Data Access Mode选择table or view,然后执行源数据表或者视图,ok。

  接下来,建一个目标数据。从Data Flow Destinations中选择OLE DB Destination,拖到Data Flow任务区。

  这个例子中,我只预备从一个源表将数据直接导入到目标表,不做任何转换。所以这时可以直接将OLE DB Source组件的输出连接到OLE DB Destination组件的输入。也就是拉动Source的绿色箭头指向Destination。实际的ETL流程,还要对数据做很多转换和清理的任务,可以通过添加各种Data Flow Transformations来实现复杂的转换逻辑。

  数据从Source连接到Destination後,双击OLE DB Destination设置连接信息,如果目标和源不在同一个数据库,那么还需求在Connect Managers中新建一个OLE DB连接。同样选择好Data Access Mode和目标表的,如果目标表还不存在,可以New一个。在Mappings中,可以看到曾经自动将source和destination的列做了映射,也可以再手动修正。

  数据流设计完後,还需求设计控制流。由于本例子中只要一个数据流,所以控制流中只要一个部件;这样,一个最简单的SSIS Package就开发完成了。

  2.部署

  开发好的SSIS Package,还需求部署到要运转的机器上。首先要生成部署工具。

  在Project->SSIS Propertites,选择Deployment Utility,将CreateDeploymentUtility属性设置位TRUE。

  然后重新Build工程,这时可以在工程目录的bin下(在工程属性中可以设置输出的目录,bin是默认目录),生成了一个Deployment目录,将该目录复制到要部署的机器上,然后右击其中的SSISTEST.SSISDeploymentManifest,选择Deploy,启动部署导游,按照提示一步步将package部署到SQL Server中即可。

  3.调度

  新建一个Job,在Step中选择类型为SQL Server Integration Services Package,然后执行要调度运转的Pacage即可。

  4.管理

  用SQL Server Management Studio连接到Integration Service上即可管理曾经部署的Package