在商业智能解决方案中,SSIS工程有两种部署模式:工程部署(project deployment)和包部署(package deployment),默认是工程部署模式,在Package的管理上,工程部署模式是当前主流的部署模式,比包部署的更容易管理,也更容易对package进行调试和故障排除,而包部署模式是传统的部署模式在包部署模式中。在包部署模式中,SSIS引擎支持包配置(Package Configuration)功能,用户能够在Package运行时动态修改属性值。包配置是配置项的集合,每一个配置项(configuration item)是一个属性/值对(property/value pair)。用户向包配置中增加配置项,Package在运行时从包配置中获取属性值,对Package的执行进行编程控制,特别在批量管理Package的场景中,比如,批量修改Package的某一个公共变量的值,切换Package的测试和产品环境等,包配置十分有用。

一般情况下,包配置信息存储在SQL Server数据库中,用户能够配置的Package对象共有四种,分别是:

  • Connection Managers:Package的链接管理器(connection managers);
  • Executables:package 的可执行组件;
  • Propertites:package的properties;
  • Variables:package的variables;

以上四种Package对象,都能够被参数化配置,这是SSIS能够把其属性值存储在包配置中,并能够在执行时应用属性的配置值的基础。

在执行Package时,SSIS Package首先读取包配置信息,将包配置中的属性值应用到Package中,然后执行package的可执行组件(executables);修改包配置中属性的值,将动态改变Package的执行上下文,例如,测试环境和产品环境的切换,修改链接管理器(Connection Manager)的连接字符串的值,使package将运行结果同步到测试环境中;在测试环境中package运行无误后,再将其部署到Production 环境中,如果使用包配置管理链接管理器的链接字符串,那么只需要修改包配置中Connection Manager的连接字符串的值,而不需要对Package做任何修改。

一,切换到包部署模式
SSIS Project默认的部署模式是Project Deployment Model,在解决方案的工程列表中选中工程,右击弹出快捷菜单,点击“Convert to Package Deployment Model”,将Project的部署模式转换为包部署模式。

切换到包部署模式之后,Project名称之后显示模式名称:(package deployment model)

二,设计Package

向Package中添加一个变量(VarCode)和一个Execute SQL Task组件,在Task组件中执行如下的TSQL语句脚本,“?”代表参数,映射到变量(VarCode),把变量的值插入到指定的表中

insert into dbo.dt_test
values(1,?,'a')

1,配置Task组件执行的TSQL语句

2,配置Task组件的参数映射

三,启用包配置

1,打开包配置向导

点击SSIS 菜单,选择“package configurations”,或者在Package的“Control Flow”面板的空白处右击,弹出快捷菜单,选中“package configurations",都能打开包配置向导。

2,启用包配置

勾选“Enable package configurations”复选框,为当前Package启用包配置功能

3,添加包配置

在”Package Configurations Organizer“中,点击Add按钮,在配置类型(Configuration Type)列表中选择SQL Server ,这意味着,Package使用SQL Server数据库来存储包配置的信息,同时,Package从SQL Server数据库中读取配置项信息。

为了存储包配置信息,必须设置SQL Server数据库及配置表,选中“specify configuration settings directly”,指定SQL Server类型的配置设置:链接(Connection),配置表(Configuration table)和配置过滤器(Configuration Filter)。

4,配置表(Configuration Table)

在Package执行时,如果指定SQL Server数据库中没有配置表,那么Package会自动创建配置表,默认情况下,SSIS用于创建配置表的脚本是:

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

配置表各个字段的含义是:

  • ConfigurationFilter: 用于唯一标识配置集的过滤器,每一个配置集都是属性/值对(property/values pair)的集合,每个Package只能设置一个ConfigurationFilter,拥有相同的ConfigurationFilter的Packages,其配置集相同,共享相同的配置信息;
  • ConfigurationValue:配置属性的值,用于更新配置属性值;
  • PackagePath:配置属性的路径,包含配置属性及其路径信息,例如, "\Package.Variables[User::VarCode].Properties[Values]"
  • ConfiguredValueType:配置属性的数据类型;

设置配置表的链接和配置集过滤器(Configuration filter):

  • Connection:用于设置访问configuration table的链接;
  • Configuration Table:指定配置表的名字(table name);
  • Configuration filter:当多个Package共用一个Configuration Table时,需要为每个Package 设置 configuration filter,如果 filter 相同,表明package使用相同的配置数据;如果某些Package有特殊的配置信息,可以为其设置不同的filter。

四,设置配置项(configuration item)

将变量VarCode的值配置到包配置中,这意味着,把变量VarCode的值存储在[dbo].[SSIS Configurations]中,Package在执行时读取这个值,并把读取到的值作为变量VarCode的值,供Task组件使用。

五,查看配置信息

当配置类型为SQL Server时,包配置信息存储在SQL Server 数据库中,默认的配置表名是[dbo].[SSIS Configurations]

select *
from [dbo].[SSIS Configurations]

六,执行package,查看执行的结果

1,使用默认值执行Package,查看Task组件执行的结果

2,修改[dbo].[SSIS Configurations]中的ConfiguredValue,再次运行package,查看Task组件执行的结果

update [dbo].[SSIS Configurations]
set ConfiguredValue=2
where ConfigurationFilter='configuration_parameter_value'

推荐文档:

如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架

SSIS Package Configurations

Understanding Integration Services Package Configurations

Package Configurations的使用示例的更多相关文章

  1. 【转】SSIS 2012 – Package Configurations Menu Option Missing

    原文:http://dataqueen.unlimitedviz.com/2012/01/ssis-2012-package-configurations-menu-option-missing/ I ...

  2. [转]Understanding Integration Services Package Configurations

    本文转自:http://msdn.microsoft.com/en-us/library/cc895212.aspx Introduction With the 2008 release, SQL S ...

  3. SSIS教程:创建简单的ETL包 -- 5. 添加包部署模型的包配置(Adding Package Configurations for the Package Deployment Model)

    包配置允许您从开发环境的外部设置运行时属性和变量. 配置允许您开发灵活且易于部署和分发的包.Microsoft Integration Services 提供了以下配置类型: XML 配置文件 环境变 ...

  4. 了解Package Configurations

    使用VS2010创建的SSIS Project有两种deployment model:project deployment 和 package deployment,默认是Project deploy ...

  5. Salesforce 的 package.xml 文件

    package.xml文件 在部署元数据(Metadata)的时候,package.xml是很关键的一个文件.此文件中定义了一个XML格式的列表,其中包含了各个元数据组件的定义. Metadata A ...

  6. 一个gulp用于开发与生产的示例

    gulp是一款流行的前端构建工具,可以帮我们完成许多工作:监听文件修改.刷新浏览器.编译Less/Scss.压缩代码.添加md5.合并文件等.gulp的配置和使用特别简单,学习gulp过程中顺便写了一 ...

  7. Integration Services创建ETL包

    http://www.cnblogs.com/chiniao/archive/2009/12/23/1630595.html  (转载) Microsoft Integration Services ...

  8. [译]Vulkan教程(03)开发环境

    [译]Vulkan教程(03)开发环境 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第3篇. In this chapter we'll set up y ...

  9. gulp整理

    gulp基于node 1.全局安装gulp: $ npm install --global gulp 2.前往项目目录,然后安装作为项目的开发依赖(devDependencies): $ npm in ...

随机推荐

  1. Codeforces CF#628 Education 8 D. Magic Numbers

    D. Magic Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  2. js动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. JS 中 Array.slice() 和 Array.splice()方法

    slice slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array: var arr = ['A', 'B', 'C', 'D', 'E ...

  4. Hybrid App经验解读 一

    郑昀编纂 关键词:Hybrid,Zepto,Fastclick,Backbone,sui,SPA,pushState,跨域,CORS click 事件还是 tap 事件? Zepto 的 show/h ...

  5. QComboBox的activated与currentIndexChanged的区别

    void activated ( int index ) void activated ( const QString & text ) 信号activated是只要单击选择框即使所选内容选择 ...

  6. slf4j的简单介绍

    SLF4J,Simple Logging Facade for JAVA,是一个十分简单的的日志facade,对于不同的日志框架做了一个封装. 对比common logging,Common logg ...

  7. Hadoop_常用存储与压缩格式

    HDFS文件格式 file_format: TEXTFILE 默认格式 RCFILE hive 0.6.0 和以后的版本 ORC hive 0.11.0 和以后的版本 PARQUET hive 0.1 ...

  8. 利用canvas图片剪切

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <met ...

  9. 如何设置mysql远程访问及防火墙设置

    笔者在一个实际的项目中需要MYSQL远程访问. 情景: 安装好Mysql, 本地访问正常,很奇怪局域的机器都无法访问该服务器上的MYSQL数据库. 经过资料查找 原来Mysql默认是不可以通过远程机器 ...

  10. IOS网络第七天WebView-04仿网易新闻详情

    *************** #import "HMViewController.h" @interface HMViewController () @end @implemen ...