我有一个挂钩到'项目配置参数'的2012 SSIS包。 我通过进入Integration Services目录设置了两个日期参数。 当我从作业代理执行包时,将忽略项目配置中两个日期参数的值,并从作业代理中选择日期。
当我去
SQL作业代理
然后到SSIS包的步骤
然后到配置选项卡。
我看到这两个日期值以粗体显示。在初次设置作业后的某个时候,我改变了那些。编辑后,配置中的所有参数都保持粗体。我猜测粗体表示作业代理设置将覆盖其他设置。 因此,我的具体问题是如何在SQL作业代理中的SSIS选项卡中取消粗体和配置设置 - 或者更一般地说,如何使用“项目设置”执行包。
答案 0 :(得分:5)
解码属性的密钥是
当然,我可以使用/ SET选项进一步混淆水域,但我还没有通过测试来了解操作的顺序是什么。
显式覆盖的示例
这演示了从配置中设置的值。下划线显示应用配置,复选框指示值来自何处。
SSIS包中未修改的值
单击参数上的省略号(...),您将看到此对话框。如果尚未应用配置,则您无法设置“使用环境变量”。此外,如果参数已标记为必需,您将无法使用默认值。
答案 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作业步骤中覆盖参数值无法恢复为使用映射的环境变量。但我终于找到了一个解决方法,而且你非常接近马蒂。尽管如此,不要为整个工作编写脚本。代替:
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'
希望有所帮助!