【问题标题】:single SSIS package with multiple package configurations具有多个包配置的单个 SSIS 包
【发布时间】:2012-10-01 21:44:00
【问题描述】:

我有一个 SSIS 包,其中包含 2 个包配置(Configuration1 和 Configuration2),配置位置存储在 2 个不同的环境变量中。必须使用哪种配置取决于在运行时传递的变量 (@type) 的值。

@type ='override'和时使用Configuration1 @type ='overload' 时使用 Configuration2。

如何在 SSIS 中执行此操作?

【问题讨论】:

    标签: configuration ssis


    【解决方案1】:

    您可以使用可选执行的 SQL 执行任务(基于使用优先约束中的表达式的 @type 的值)来更新“SSIS 配置”表中的配置值。在这种情况下,您应该将配置从“环境变量”迁移到 SQL Server 表。

    【讨论】:

    • 是的,我是为一个客户做的,我们必须根据一个变量的值选择性地执行一个过程
    • 也许我误解了你的方法。我担心的是配置是在包运行之前加载的 - Understanding how Integration Services Applies Configurations 所以现在有办法,至少使用 SSIS 的内置/本机配置有条件地切换一组配置。可以选择执行一个执行 SQL 任务,但这不会涵盖本机地址的所有可配置内容。也不包括连接管理器,因为它们可能会在包开始时打开连接
    • 你怎么看这个:` -> 设置@type -> if @type = 'override' run (Execute SQL Task 1) else if @type = 'overload' run (Execute SQL Task 2) -> 运行 (执行 SQL 任务 3) -> 运行包的剩余部分` with: (执行 SQL 任务 1) = UPDATE [config_table] SET val = value_override WHERE filter = 'prop_n' (执行 SQL 任务 2) = UPDATE [config_table] SET val = value_overload WHERE filter = 'prop_n' (执行 SQL 任务 3) = @ 987654324@ 然后将值影响到某个变量并使用它。
    • 感谢@Amine Chafai。在我的场景中,配置方法无法从“环境变量”迁移到 SQL Server 表。因为该包已经在生产中,现在我必须在另一个场景中使用相同的包。所以客户不允许改变方法。在不改变“环境变量”方法的情况下,还有其他方法可以做到吗?
    • 如果您有权限启用存储过程xp_cmdshell,您可以使用SQL 执行任务将两个环境变量之一检索到一个变量中然后使用它。否则,您也可以尝试使用脚本任务,根据输入参数@type,将环境变量的值影响到一个包变量中来获取对应的环境变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2022-11-03
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多