Integrartion Services 包实际上就是一个对象属性的集合,在前面我们开发的所有 Integration Services包,其中的变量、属性,比如:数据库链接、同步文件目录等,我们都直接在包中用一个常量的方式,赋给这些变量或者属性,这就给这个包的发布与移置,带来很大的麻烦,比如我们在开发环境中开发包的时候,所有变量与属性都是按照开发环境来来进行设置,开发完成后,要将这个包部署到生产环境中,DB连接啊、同步目录啊等都会发生变化,以前的做法:在新环境中打开包,重新设置一遍这些变量或者属性的值,才可以正常运行。从自Integration Services 2005 以来,多了一个[包配置]功能,这个问题就迎刃而解了。配置文件可以帮助包进行无缝转移,而且可以使用配置过程自动化,从而减少了部署的麻烦,也降低了出错的风险。
Integration Services 程序的包配置,允许将程序包、连接、容器、变量等任意SSIS属性,写入到一个XML 文件或表中,然后在运行时读取。其配置类型主要有以下几种方式:
1、XML 配置文件。
2、环境变量。
3、注册表。
4、父包变量。
5、Sql Server。
其中,Xml 配置文件、父包变量、Sql Server 比较常见,而其它两种类型,却用得较少,下面我们将详细介绍常见的三种包配置。
(一)、XML 配置文件。
选择SSIS菜单--包配置,打开如下窗口,包配置就从这里开始起航。
选中“启用包配置”,点击“新增”,如图:
从[配置类型]下拉列表框中可以看出,有多种类型的包配置。我们在这里选择“XML配置文件”,输入配置文件名IisLog.dtsconfig。
配置文件默认为“.dtsconfig”类型,其文件格式是标准的XML文件格式。Integration Services 对配置文件的扩展名并没有严格的规定,如果把它修改成.txt 或者.xml 等都没有关系,通常把它修改为".xml" 文件,这样通用的XML文件编辑器就可以方便地编辑了。(示例中没有修改扩展名)
点击[下一步],就该选择配置哪些属性了,如图:
在左边的[对象]框中,如果把所有的树结点折叠起来,可以看出包的这四类对象(变量、连接管理器、Properties、可执行文件)的属性可以通过配置文件来管理。其中[可执行文件],为控制流中的所有组件。下面我们展开所有结点,勾选要配置的属性,当选中某一个属性的时候,该属性的默认值就会在右边[属性特性]框中显示出来,这个时候也可修改。
[下一步],如图:
输入[配置名称],点击完成,XML的配置就这样轻松地完成了。
我们转到配置文件存放的目录,找到刚才的配置文件"IisLog.dtsconfig ",看看它象什么样子:
<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="BUYNOW\goumh" GeneratedFromPackageName="ImportIisLog" GeneratedFromPackageID="{F874E3F1-9FD5-4B89-8E29-A86A8E6A6783}" GeneratedDate="2010/1/13 17:36:34"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property" Path="\Package.Connections[ApIisLog].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=goumh-hgh;Initial Catalog=ApIisLog;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Application Name=SSIS-ImportIisLog-{28895FFB-4DA0-4B30-9E59-649F1D200DFA}RD5-HGH.IisLog;</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="\Package.Connections[BackupFile].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>E:\inetpub\wwwroot\Sql 2008 Study\SSIS\IisLog\BackupFile</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="\Package\Foreach 循环容器.ForEachEnumerator.Properties[Directory]" ValueType="String">
<ConfiguredValue>E:\inetpub\wwwroot\Sql 2008 Study\SSIS\IisLog\DataFile</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="\Package\Foreach 循环容器.ForEachEnumerator.Properties[FileSpec]" ValueType="String">
<ConfiguredValue>*.log</ConfiguredValue>
</Configuration>
</DTSConfiguration>
这个配置文件中,包含了包ID,属性路径、数据类型、以及属性的值。如果我们要修改包的配置,也就再也不用在打开包,来一个属性一个属性地修改了,直接修改配置文件就可以搞定,给包的发布与部署带来了相当大的方便。
(二)、SQL Server
这也是我们常用到的一种配置方式,配置方式与前面的XML配置大同小异,只是最后的配置属性存储到SQL Server 数据库罢了。
在[配置类型]下拉列表框中,选择[SQL Server ],下面的配置界面也随着发生了变化。
[连接],即SQL Server 即数据库的连接,如果从下拉列表框中,找不到对应的连接,点击[新增],就可以创建一个新的连接,这与在连接管理器中,创建OLE DB 连接是一样的。
[配置表(A)],即配置属性存放的Table ,如果这个Table 没有事先创建好,点击[新建],系统会默认给出其如下SQL语句,点击[确定],Table 就创建完成了。
(
ConfigurationFilter NVARCHAR(255) NOT NULL,
ConfiguredValue NVARCHAR(255) NULL,
PackagePath NVARCHAR(255) NOT NULL,
ConfiguredValueType NVARCHAR(20) NOT NULL
)
[配置筛选器(F)]:这个很关键,它是区分每个包的配置属性的key 值,也就是说,如果一个Table 中,存放有多个包的配置属性的时候,每一个包就是根据这个这个key 值来进行过滤的,所以不同的包,应该有不同的key 值。
[下一步],选择要配置的属性,与上面讲的[XML配置文件]的处理方式一致了。
下面,我们回到SQL Server 中,找出刚才创建的记录,看看它又是啥面貌:
(三)、父包变量
在Integration Services 中,有这样一个任务[执行包任务],利用这个组件,我们就可以将一个包嵌套在另一个包中,这对于我们细化包的粒度,让包的业务处理变得更单纯,非常有帮助,如下图这些模式:
父包变量的定义也非常简单,打开包配置向导,如下图:
[配置类型]:选择“父包变量”。
[父变量]:这里输入父包中的变量的名称。
[下一步],选择父包变量映射的属性名称,最后点击完成,就会获得如下图所示的效果。
我们常见的包配置就这些了,环境变量、注册表这两种类型很少用到,这里就不多讲了。
包配置给包的部署带来了非常大的方便,最好的方式是每个服务器使用一个配置文件。但是,从包的配置界面可以看出,一个包可以应用多个配置文件,每个包配置按照[包配置组织程序]中显示的顺序应用(父包变量除外),如果一个配置中有一项失败了,它只会发出警告,也不会引起包错误;反之,一个配置文件也可以应用到多个包中,如果我们灵活应用,包的无缝移置,也就不再是神话了。
导读:
Integration Services学习(3):数据流任务(下)
Integration Services 学习(4):变量和表达式