【问题标题】:Overriding package configured variables in SSIS 2008 using DTEXEC /SET使用 DTEXEC /SET 覆盖 SSIS 2008 中的包配置变量
【发布时间】:2011-09-21 17:14:18
【问题描述】:

我在将 2005 包转换到 2008 时遇到问题 - 似乎在 2008 年,配置为使用配置过滤器的包变量(例如从 [SSIS 配置] 填充)将不支持 dtexec 提供的 /SET 命令。 exe 在运行时覆盖包变量值。

此问题记录在此处http://dougbert.com/blogs/dougbert/archive/2009/04/07/understand-how-ssis-package-configurations-are-applied.aspx

对此最直接的解决方案是什么?我想要旧的 SSIS 2005 行为,其中包变量最初是从 [SSIS 配置] 加载的,但如果我显式调用 /SET

,我可以在运行时覆盖它

我有一个变通办法,但我希望有一个更好的解决方案 - 我基本上有两个版本的我想要的变量...例如 NETWORK_PATH、NETWORK_PATH_CONFIG ...我在 NETWORK_PATH 上放置了一个表达式以使用 NETWORK_PATH_CONFIG(这个变量将从 [SSIS 配置] 填充)如果 NETWORK_PATH 的值在运行时首次评估表达式时最初为 NULL,否则使用提供的值(可能由 dtexec /SET)

【问题讨论】:

    标签: sql-server-2008 etl ssis ssis-2005


    【解决方案1】:

    您可以使用 /Conn 更改配置设置的位置并在那里进行不同的设置,或者您从配置中完全删除变量,以便可以在 dtexec /set 参数中设置它。

    如果你想拥有一个默认值并覆盖,那么你将不得不使用 /conn 参数并更改设置的位置。

    例如

    “C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe”
    /文件“C:\Path\To\My\Package\Import Types.dtsx” /Conn Connection1;"Provider=SQLNCLI10;Server=MYSERVER;Database=DB_ONE;Uid=USERNAME;Pwd=PASSWORD;" /Conn Connection2;"Provider=SQLNCLI10;Server=MYSERVER;Database=DB_TWO;Uid=USERNAME;Pwd=PASSWORD;"

    似乎有人认为这比 2005 年的方法更好。在我打他之前,我想知道他的理由。

    【讨论】:

    • 哎呀——这绝对是我没有考虑过的解决方案,但是必须维护单独的数据库实例,仅仅包含单独的值集并不是一个理想的解决方案,但谢谢我不知道这种技术.最终,我最终采用了我的原始方法,即为我想要配置的每个变量设置一个单独的“覆盖”版本,原始变量具有以下形式的表达式: ISNULL(@[User::MAIL_RECIPIENTS_OVERRIDE]) ? @[User::MAIL_RECIPIENTS] : @[User::MAIL_RECIPIENTS_OVERRIDE]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多