SSIS项目从创建到部署的简单总结(一)
最近在给项目部署测试环境,需要进行部分数据迁移的工作。第一次接触到了SSIS,研究了半天,总算是把项目部署到了数据库中。由于接触SSIS还比较浅,写这篇文章也是围绕工作中实际使用到的部分,我相信对于刚接触SSIS的同学,在了解如何使用SSIS应该会有一定的帮助。废话不多说,我们进入正题。
1、安装Integration Services和SSIS
Integration Services 是用于生成企业级数据集成和数据转换解决方案的平台。 使用 Integration Services 可解决复杂的业务问题,具体表现为:复制或下载文件,加载数据仓库,清除和挖掘数据以及管理 SQL Server 对象和数据。
在SQL2017安装时勾选Integration Services 项目。安装完成后打开SQL server配置管理器,启动Named pipes和TCP/IP服务。
如果想使用VS编写SSIS的同学可以移步到微软的官方网站上下载SSIS,Microsoft.DataTools.IntegrationServices.exe:
https://ssis.gallery.vsassets.io/_apis/public/gallery/publisher/SSIS/extension/SqlServerIntegrationServicesProjects/3.2.2/assetbyname/Microsoft.DataTools.IntegrationServices.exe?redirect=true&install=true
等待安装完成之后,我们的VS中,就会出现Integration Services 项目。
至此,开发环境安装完成。
2、编写IS项目
新建IS项目后,我们先熟悉一下工作环境。如图2.1:
可以看到,微软同样给我们提供了很多控件,通过这些控件,我们很容易就可以完成原本只能在SQL Server Management Studio中才能完成的任务。
下面,我们要做的就是把源数据库中的某张表里的数据复制到目标数据库中对应的表中。其实,SSIS最典型的用途在于能够从不同版本或者不同类型的数据库间很方便的迁移数据。
为了操作方便,我在这里仅仅使用了SQL Server做为唯一数据源。
2.1 建立数据库
这里,为了演示方便,我在同一个实例下建立了两个数据库,分别为DBSource和DBTarget。在DBSource和DBTarget下,又分别创建了一张Student表。如图2.2:
在DBSource的Student表中,先录入数据,为一会儿的操作做准备。
2.2 配置连接管理器
在解决方案资源管理器中,右键连接管理器,选择“新建连接管理器”。我们选择OLEDB做为链接管理器的类型。如图2.3:
然后,在弹出的“配置 OLE DB 连接管理器”中,选择新建。因为我使用的是SQL Server数据库,所以一般使用默认的提供程序“SQL Server Native Client 11.0”。如果你的源数据库是Oracle,则选择”Oracle Provider for OLE DB”做为提供程序即可。如果列表中没有“Oracle Provider for OLE DB”,可以搜一下,网上有很多解决办法。选择完提供程序并且输入了服务器的登陆信息后,我们可以测试一下连接是否成功。单击“测试链接”,如果没有问题,我们就可以选择源数据库了。具体如图2.4:
单击“确定”,我们就打开了一条通向源数据库的通道。
用同样的方法,我们再次创建一个用于目标数据库的连接管理器。由于步骤相同,不再赘述。
2.3 编辑SSIS包
在我们创建项目的时候,默认已经新建了一个SSIS包,我们对其进行重命名为“Student”,与我们需要进行操作的表名相同。如图2.5:
双击“Student.dtsx”文件,打开包。切换到“控制流”视图下,我们向设计器中拖入“执行SQL任务”控件。这个控件的作用是执行SQL语句,我们使用这个控件的目的是,在每次从源数据库获取数据存入目标数据库之前,先将目标数据库中的数据清空。如图2.6:
双击该控件,打开编辑器。在Connection属性中选择目标服务器,SQLStatusment属性中输入执行的SQL语句。如图2.7所示:
切换到“表达式”页中,我们在Expressions属性下添加两个表达式,分别为“Name”和“SqlStatementSource”。如图2.8:
注意delete from的后面有空格!
填入相应的信息(可参考如上写法,添加变量“System::PackageName”,也就是我们刚才设置过的包名)后,保存。
接着,我们再在桌面中拖一个“数据流任务”控件,并移动箭头指向数据流任务。如图2.9:
双击“数据流任务”控件,切换到“数据流”视图下,在工具栏中分别拖出“OLE DB源”和“OLE DB目标”控件,如图2.10:
双击“OLE DB源”控件,打开编辑器,在“OLE DB 连接管理器”中,选择源数据库,“数据访问模式”选择“表或视图”,最后选择我们需要迁移的数据表,如图2.11:
单击保存,配置完成。我们以同样的方式,配置“OLE DB目标”控件,在“映射”页中可以查看源数据库和目标数据库的列的映射关系是否正确,如图2.12:
当然,对于设置为自增的列,我们无法为其插入数据。所以我们可以删除其映射关系,这样这一列的数据就不会被转移到目标数据库中。
到这里,编辑SSIS包的工作就完成了。最后让我们执行一下,看看我们的包是否配置成功。成功的显示效果如图2.13:
当然,我们也可以在“进度”视图下,查看更具体的执行情况。
3、部署SSIS包
完成了以上步骤后,我们可以开始进行包的部署工作。打开VS,右键解决方案,
在右键菜单中选择部署,进入“Integration Services 部署向导”界面,如图3.1:
在“选择目标”标签页下,选择我们要部署包的服务器,根据个人需要选择本地服务器或远程服务器,然后选择包存放的路径。此时,会提示如下信息:
这是因为SSIS包固定是存放在SQL Server的“Integration Services 目录”下的“SSISDB”目录下,这个目录默认是没有的,需要我们自行创建。
打开SQL Server,在对象资源管理器中找到“Integration Services 目录”。右键,选择“新建目录”,打开“创建目录”对话框,如图3.3:
勾选“启用CLR集成”,键入密码。单击确定,“SSISDB”目录创建成功。
好了,现在我们回到Visual Studio。再次选择路径,刚才的信息消失了,转而出现了“通过浏览查找文件夹或项目”对话框。我们能看到刚才已经创建好的“SSISDB”文件。如图3.4:
SSIS包不能直接存放在“SSISDB”目录下,我们新建一个文件夹,然后单击确定,OK,程序已经帮我们把路径设置好了。
单击下一步,我们开始执行部署。部署完成后的界面如图3.5:
现在,我们进入SQL Server。可以看到,包已经部署成功了: