zoukankan      html  css  js  c++  java
  • SSIS 学习(6):包配置(上)【转】

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

     1 <?xml version="1.0"?>
     2 <DTSConfiguration>
     3   <DTSConfigurationHeading>
     4     <DTSConfigurationFileInfo GeneratedBy="BUYNOWgoumh" GeneratedFromPackageName="ImportIisLog" GeneratedFromPackageID="{F874E3F1-9FD5-4B89-8E29-A86A8E6A6783}" GeneratedDate="2010/1/13 17:36:34"/>
     5   </DTSConfigurationHeading>
     6   <Configuration ConfiguredType="Property" Path="Package.Connections[ApIisLog].Properties[ConnectionString]" ValueType="String">
     7     <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>
     8   </Configuration>
     9   <Configuration ConfiguredType="Property" Path="Package.Connections[BackupFile].Properties[ConnectionString]" ValueType="String">
    10     <ConfiguredValue>E:inetpubwwwrootSql 2008 StudySSISIisLogBackupFile</ConfiguredValue>
    11   </Configuration>
    12   <Configuration ConfiguredType="Property" Path="PackageForeach 循环容器.ForEachEnumerator.Properties[Directory]" ValueType="String">
    13     <ConfiguredValue>E:inetpubwwwrootSql 2008 StudySSISIisLogDataFile</ConfiguredValue>
    14   </Configuration>
    15   <Configuration ConfiguredType="Property" Path="PackageForeach 循环容器.ForEachEnumerator.Properties[FileSpec]" ValueType="String">
    16     <ConfiguredValue>*.log</ConfiguredValue>
    17   </Configuration>
    18 </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 中,有这样一个任务[执行包任务],利用这个组件,我们就可以将一个包嵌套在另一个包中,这对于我们细化包的粒度,让包的业务处理变得更单纯,非常有帮助,如下图这些模式:

     

     

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

     

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

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

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

     

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

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

    /***********************************************************************************************
     *【Author】:游子吟
     *【Date】:2013年07月02日
     *【URL】:http://www.cnblogs.com/invinboy/archive/2010/01/14/1646731.html
     *【Notice】:
     *1、本文为原创技术文章,首发博客园个人站点。
     *2、转载和引用请注明作者及出处。
     *3、本文必须全文转载和引用,任何组织和个人未授权不能修改任何内容,并且未授权不可用于商业。
     *4、本声明为文章一部分,转载和引用必须包括在原文中。
     ***********************************************************************************************/

  • 相关阅读:
    国标ikecin插座资料
    LED平面管测试资料
    elementui使用MessageBox 弹框自定义内容$msgbox:实现一个textarea文本输入框
    ajax请求的时候后台有三个服务器地址
    前端用xshell向后端服务器部署项目
    vue+echarts 实现map3D地图tooltip弹框读取后台返回的数据,并显示弹框
    AWS网络架构及知识概述
    K8s控制器 StatefulSet
    pod的数据持久化2 NFS
    Pod的数据持久化1 hostPath 和emptyDir
  • 原文地址:https://www.cnblogs.com/armyant/p/3167207.html
Copyright © 2011-2022 走看看