游子吟

致力于.Net,致力于企业信息化工程!
Harvest = Hope + Struggle

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  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 ",看看它象什么样子: 

XML 配置代码
<?xml version="1.0"?>
<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 就创建完成了。 

CREATE TABLE [dbo].[SSIS Configurations]
(
    ConfigurationFilter NVARCHAR(255NOT NULL,
    ConfiguredValue NVARCHAR(255NULL,
    PackagePath NVARCHAR(255NOT NULL,
    ConfiguredValueType NVARCHAR(20NOT NULL
)

  [配置筛选器(F)]:这个很关键,它是区分每个包的配置属性的key 值,也就是说,如果一个Table 中,存放有多个包的配置属性的时候,每一个包就是根据这个这个key 值来进行过滤的,所以不同的包,应该有不同的key 值。

  [下一步],选择要配置的属性,与上面讲的[XML配置文件]的处理方式一致了。

  下面,我们回到SQL Server 中,找出刚才创建的记录,看看它又是啥面貌:

  

  (三)、父包变量

  在Integration Services 中,有这样一个任务[执行包任务],利用这个组件,我们就可以将一个包嵌套在另一个包中,这对于我们细化包的粒度,让包的业务处理变得更单纯,非常有帮助,如下图这些模式:

 

 

  父包变量的定义也非常简单,打开包配置向导,如下图:

 

  [配置类型]:选择“父包变量”。

  [父变量]:这里输入父包中的变量的名称。

  [下一步],选择父包变量映射的属性名称,最后点击完成,就会获得如下图所示的效果。 

 

  我们常见的包配置就这些了,环境变量、注册表这两种类型很少用到,这里就不多讲了。 

  包配置给包的部署带来了非常大的方便,最好的方式是每个服务器使用一个配置文件。但是,从包的配置界面可以看出,一个包可以应用多个配置文件,每个包配置按照[包配置组织程序]中显示的顺序应用(父包变量除外),如果一个配置中有一项失败了,它只会发出警告,也不会引起包错误;反之,一个配置文件也可以应用到多个包中,如果我们灵活应用,包的无缝移置,也就不再是神话了。

   

 

 导读:

 

SSIS 学习(1) 概要

SSIS 学习(2):数据流任务(上)

Integration Services学习(3):数据流任务(下)

Integration Services 学习(4):变量和表达式 

Integration Services 学习(5):容器 

 

posted on 2010-01-14 08:46  巴山游子  阅读(3509)  评论(5编辑  收藏  举报