SSIS 包配置
在商业智能解决方案中,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 包的日志和包配置框架
Understanding Integration Services Package Configurations
SSIS 包配置的更多相关文章
- SQL Server Integration Services(SSIS) 包配置与部署
SSIS配置此处的配置方式,主要针对到正式服务器上要修改服务器名,和连接服务器等配置注意:1. 包配置在windows2008上生成后,在windows2003上mysql的配置无法使用,总是报错连接 ...
- SSIS包配置动态配置数据库连接
动态连接数据库便于维护 用SSIS包配置实现 1.控制流页签 - 右键 - 包配置 2.配置xml文件 3.指定连接属性:ServerName.UserName.Password 测试: 1.配置错误 ...
- 实例学习SSIS(三)--使用包配置
原文:实例学习SSIS(三)--使用包配置 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS(四)- ...
- 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架
一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...
- SSIS 学习(7):包配置(下)【转】
经过前面几个章节的学习,我们开发的ETL包算已经完成一大半了,但是还不够完美,正如一场足球比赛,前面大家打得很辛苦,传接得也很漂亮,但 是临门一脚的技术不过关,进不了球,一切都是白搭.今天我们就来为大 ...
- SSIS 学习(6):包配置(上)【转】
Integrartion Services 包实际上就是一个对象属性的集合,在前面我们开发的所有 Integration Services包,其中的变量.属性,比如:数据库链接.同步文件目录等,我们都 ...
- SSIS教程:创建简单的ETL包 -- 5. 添加包部署模型的包配置(Adding Package Configurations for the Package Deployment Model)
包配置允许您从开发环境的外部设置运行时属性和变量. 配置允许您开发灵活且易于部署和分发的包.Microsoft Integration Services 提供了以下配置类型: XML 配置文件 环境变 ...
- [转]在SSIS中,使用“包配置”时的常见错误与解析
本文转自:http://www.cnblogs.com/invinboy/archive/2008/05/26/1034312.html 在以前的DTS中,在包的开发.测试.发布迁移过程中你必须手动的 ...
- 配置SSIS 包部署
包配置是干嘛滴! 使用包配置可以从开发环境的外部设置运行时属性和变量. 把用户变量转换成Config文件 步骤: 准备工作 把第一个例子中的userinfo.txt复制两份,放到同一个 ...
随机推荐
- 存储过程使用 in 添加多个参数的情况处理方式【转】
原文连接:http://www.jb51.net/article/41472.htm -->情景 ① 通过刚才的SQL递归方式,我们已经可以将一个组织机构和其全部下级单位查询出来:假设每个组织机 ...
- .Net 初步学习笔记之三---变量
一.存储变量的语法: 变量类型 变量名: 变量名=值: “=”号:把等号右边的值赋值给等号左边的变量 二.常用的变量 1.整数类型 int //只存整数,不能存小数 2.小数类型 double ...
- Python处理Windows事件日志(json)
通过NXlog将Windows事件日志保存为json格式文件,然后在Python中使用json.loads()进行处理. NXlog在将Windows事件日志保存为json格式文件,文件中带入了BOM ...
- Linux uniq命令详解
uniq常见命令参数 用法:uniq [选项]... [文件] 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出. 不附加任何选项时匹配行将在首次出现处被合并. 长选项必须使用的参数 ...
- 记录一次mysql使用load into命令导入csv格式数据的过程
今天从qwiklab实验获取一组数据,大概有5万条,在qwiklab实验室使用的是pgsql数据库,但是今天想把他插入本地的mysql数据库中. 1.首先是查看一下数据内容: 数据中有的是空值,有的是 ...
- 彻底理解lib和dll
转自:http://www.cppblog.com/amazon/archive/2009/09/04/95318.html 两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口 ...
- 投稿核心期刊、中文重要期刊、SCI二区及以上期刊目录
大家在研究生期间想必均经历过投稿核心期刊的烦恼,不知道哪些是核心期刊,那些是普通期刊,万一选的不对岂不是浪费了时间,因此小顾在网络上收集了了2018北大核心期刊目录及全国中文重要期刊目录和SCI二区及 ...
- 【Ansible 文档】【译文】Ad-Hoc 命令介绍
Introduction To Ad-Hoc Commands Ad-Hoc命令介绍 下面的例子展示了如何使用 /usr/bin/ansible 来运行ad hoc任务. 什么是ad hoc命令? 一 ...
- 【转】开篇python--明白python文件如何组织,理解建立源文件
在Python 中引用是非常简单的事情,这里需要清楚三个概念就可以了包.模块.类.类这个就不用说了. 模块对应的是一个.py 文件,那么module_name 就是这个文件去掉.py 之后的文件名,p ...
- sublime设置node.js编译
1. 首先需安装node环境并配置好环境变量,安装教程. 2. 然后在sublime中打开工具(Tools)→编译系统(Build System)→新编译系统(New Build System) 3. ...