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
新闻热点
疑难解答