【问题标题】:Make SSIS package use Package Configuration(.dtsConfig file) instead of Variables使 SSIS 包使用包配置(.dtsConfig 文件)而不是变量
【发布时间】:2017-12-27 07:25:31
【问题描述】:

我创建了一个 SSIS 包。我想在本地使用变量进行开发。但是,当我将此包移至 QA 时,我想使用 XML 包配置文件 (.dtsConfig),以便它使用特定于环境的值。我通过将 .dtsConfig 文件路径保留在环境变量中来使用 间接配置文件 并且我还打开了“启用包配置”

我生成了 .dtsConfig 文件,对其进行了必要的更改(针对特定于环境的值)。将 .dtsx & .dtsConfig 文件复制到不同的服务器。在服务器上创建环境变量,其值具有 .dtsConfig 文件的路径。从 SQL 作业调用 SSIS 包。

但是,在服务器上,它使用的是变量值而不是 .dtsConfig 文件中的值。在本地时,它使用 .dtsConfig 文件中的值。我想要完全相反的行为。

我在这里缺少什么?这种行为还有其他属性吗?

注意:在 SQL 作业的“配置”选项卡中添加 .dtsconfig 文件路径,使用包配置文件中的值。但我想为 .dtsConfig 文件路径使用环境变量

【问题讨论】:

  • 如果您指定详细日志记录,执行日志中有什么内容? SSIS 是否尝试加载 dtsConfig 文件?
  • 我不太确定您是否可以将配置文件路径放在环境变量中。您是否看过一些说明您可以做到这一点的文档?
  • 是的。可以做到,概念是间接配置。 sqlscape.wordpress.com/tag/direct-vs-indirect-configuration

标签: ssis ssis-2012


【解决方案1】:

环境变量在进程启动时被缓存,因此在重新启动进程之前添加新变量是不可见的,无论是 BIDS 还是 SQL 代理或其他。 【来源于网络】

重新启动 SQL Server 后,它开始使用间接包配置 (.dtsConfig) 文件。但是,重新启动所有环境的数据库服务器并不是一个可行的解决方案。所以我更喜欢使用 SQL Job 配置。即在作业配置中添加 .dtsConfig 文件路径。

在开发过程中,我必须在创建环境变量后重新启动 Visual Studio。为了确认这种行为,我遵循了以下步骤:

  1. 创建了两个 .dtsConfig 文件。 Config_Error.dtsConfig & Config.dtsConfig。名称是不言自明的。 Config_Error.dtsConfig 文件有错误。所以当环境变量有 Config_Error.dtsConfig 文件路径时,包应该会失败。
  2. 创建的环境变量指向 Config.dtsConfig 文件路径。
  3. 在 Visual Studio 中打开解决方案。
  4. 在调试模式下执行包。按预期执行成功。
  5. 已将环境变量值更改为指向 Config_Error.dtsConfig 文件路径。
  6. 在调试模式下执行包。执行仍然成功。但是,它应该失败,因为 .dtsConfig 现在有无效值。这意味着,Visual Studio 调试器仍然无法使用修改后的环境变量值。
  7. 重新启动 Visual Studio。
  8. 在调试模式下执行包。执行失败如预期。即重启后,Visual Studio 得到了修改后的环境变量值。

所以,如果我们使用环境变量,消费程序应该在任何更改后重新启动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多