首页 > 代码库 > SSIS 包配置

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_testvalues(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=http://www.mamicode.com/2where ConfigurationFilter=‘configuration_parameter_value‘

技术分享

 


SSIS 包配置