【问题标题】:SSIS package ignores project configuration settings and follows SQL Job AgentSSIS 包忽略项目配置设置并遵循 SQL 作业代理
【发布时间】:2014-12-10 23:01:11
【问题描述】:

我有一个 2012 SSIS 包,它与“项目配置参数”挂钩。 我通过进入集成服务目录设置了两个日期参数。 当我从 Job Agent 执行包时,项目配置中的两个日期参数的值将被忽略,并从 Job Agent 中获取日期。

当我去

SQL 作业代理

然后到 SSIS 包的步骤

然后到配置选项卡。

我看到这两个日期值以粗体显示。在最初设置工作后的某个时候,我改变了这些。配置中的任何参数一旦编辑,就会保持粗体。我猜粗体表示 Job Agents 设置将覆盖其他设置。 所以,我的具体问题是如何在 SQL 作业代理的 SSIS 选项卡中取消粗体和配置设置 - 或者更一般地说,我如何使用项目设置执行包。

【问题讨论】:

    标签: ssis sql-server-2012


    【解决方案1】:

    你解码属性的关键是

    • 粗体 = 显式覆盖(本地定义)
    • 下划线 = 从 SSIS 环境配置中设置
    • 星号 = 敏感值,因此请点击查找
    • 常规 = 存储的包裹价值

    当然,我可以使用 /SET 选项进一步搅浑水,但我还没有测试过应用值的操作顺序是什么。

    显式覆盖

    显式覆盖示例

    环境配置

    这演示了从配置中设置的值。下划线表示应用了配置,复选框表示值的来源。

    默认

    来自 SSIS 包的未修改值

    如何更改这些?

    单击参数上的省略号 (...),您将看到此对话框。如果没有应用配置,您将无法设置使用环境变量。此外,如果该参数已被标记为必需,则您将无法使用默认值。

    【讨论】:

    • 谢谢 billnkc,把它和屏幕截图一起列出来——它非常有用。
    • 我意识到这是一篇旧帖子,但是......当“设置参数值”窗口的下半部分不存在时我该怎么办。我所拥有的只是设置文字值的能力,但我无法将其设置为我的环境变量。
    【解决方案2】:

    我也遇到过这种痛苦 - 在 SSIS 作业步骤中覆盖参数值无法恢复为使用映射的环境变量。但我终于设法找到了解决方法,你和马蒂非常亲近。不过,不要费心编写整个工作的脚本。而是:

    1. 在作业步骤中对包配置中的相关参数值再进行一次手动更改。单击“确定”返回“作业步骤列表”屏幕。
    2. 选择 Script Action to new query window,您应该会看到如下内容:

    EXEC msdb.dbo.sp_update_jobstep @job_id=N'6a4b399e-f1ad-4753-96d9-b9ea75fb7bf9', @step_id=1 , @command=N'/ISSERVER "\"\SSISDB\EnvironmentName\ProjectName\Package.dtsx \"" /SERVER "\"InstanceName\"" /ENVREFERENCE n /Par "\"$Project::ParameterName\"";"\"YourValue"" /Par "\"$ServerOption: :LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E'

    1. 找到有问题的变量并将其删除(参见上面的粗体部分作为示例)。确保删除变量之前的 /Par。
    2. 运行脚本
    3. 重新检查作业以确认更改。

    希望有帮助!

    【讨论】:

      【解决方案3】:

      上面的答案很完整,但是我已经了解了是什么让参数在 SQL 作业代理 UI 中变为粗体。 例如,假设我在 SSMS 中工作并选择创建的脚本。 @command 看起来像这样


      @command=N'/ISSERVER "\"\SSISDB\MDS\MDS_Test\MDS_Test_Load.dtsx\"" 
      /SERVER "\"SQL_SRV-SS01\"" /ENVREFERENCE 10034 
      /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 
      /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True 
      /CALLERINFO SQLAGENT /REPORTING E',
      

      现在,我去配置一个 SSIS 包并为两个参数输入特定日期——StartDate 和 EndDate。单击确定两次,然后再次为作业创建脚本。


      @command=N'/ISSERVER "\"\SSISDB\MDS\MDS_Test\MDS_Test_Load.dtsx\"" 
      /SERVER "\"SQL_SRV-ONE\"" /ENVREFERENCE 10034 
      /Par "\"$Project::EndDate(DateTime)\"";"\"11/9/2014 12:00:00 AM\"" 
      /Par "\"$Project::StartDate(DateTime)\"";"\"12/17/2014 12:00:00 AM\"" 
      /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 
      /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True 
      /CALLERINFO SQLAGENT /REPORTING E', 
      

      我们指定了两个参数!嵌入在@command 中。那么,您如何“取消指定”参数? 我认为您需要编写作业脚本,删除它,更改 @command - 删除 /PAR 条目并重新创建它。

      【讨论】:

        【解决方案4】:

        当您想要重新分配环境值并且只能选择更改参数值时,您还必须删除 sp_update_jobstep ("/ENVREFERENCE XXXX") 中的环境引用。

        然后再次打开作业属性中的作业步骤,重新分配环境。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多