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