SSIS包忽略项目配置设置并遵循SQL作业代理

时间:2014-12-10 23:01:11

标签: ssis sql-server-2012

我有一个挂钩到'项目配置参数'的2012 SSIS包。 我通过进入Integration Services目录设置了两个日期参数。 当我从作业代理执行包时,将忽略项目配置中两个日期参数的值,并从作业代理中选择日期。

当我去

SQL作业代理

然后到SSIS包的步骤

然后到配置选项卡。

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

3 个答案:

答案 0 :(得分:5)

解码属性的密钥是

  • bold =显式覆盖(本地定义)
  • 下划线=从SSIS环境配置设置
  • asterisked =敏感值因此请点击并查找
  • 常规=存储包价值

当然,我可以使用/ SET选项进一步混淆水域,但我还没有通过测试来了解操作的顺序是什么。

显式覆盖

显式覆盖的示例

enter image description here

环境配置

这演示了从配置中设置的值。下划线显示应用配置,复选框指示值来自何处。 enter image description here

默认

SSIS包中未修改的值 enter image description here

如何更改这些?

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

enter image description here

答案 1 :(得分:0)

上面的答案非常完整,但我已经了解了在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 -cutting / PAR条目并重新创建它。

答案 2 :(得分:0)

我也遇到了这种痛苦 - 在SSIS作业步骤中覆盖参数值无法恢复为使用映射的环境变量。但我终于找到了一个解决方法,而且你非常接近马蒂。尽管如此,不要为整个工作编写脚本。代替:

  1. 在作业步骤的包配置中再次手动更改相关参数值。单击“确定”返回“作业步骤列表”屏幕。
  2. 选择脚本操作到新查询窗口,您应该看到如下内容:
  3. 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(布尔)\“”; True / CALLERINFO SQLAGENT / REPORTING E'

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