【问题标题】:SSIS scheduled job does not retain command line changesSSIS 计划作业不保留命令行更改
【发布时间】:2014-10-14 10:11:06
【问题描述】:

我将 SSIS 包中的所有 PackageProtection 设置更改为 EncryptWithPassword

这意味着我必须在运行它们的 SQL 代理作业上更改我的命令行参数,并使用 /DECRYPT 开关输入密码。

我就是这么做的。创建了这样的工作:

/****** Object:  Step [Load Staging]    Script Date: 14/10/2014 13:02:20 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Load Staging', 
        @step_id=3, 
        @cmdexec_success_code=0, 
        @on_success_action=3, 
        @on_success_step_id=0, 
        @on_fail_action=2, 
        @on_fail_step_id=0, 
        @retry_attempts=0, 
        @retry_interval=0, 
        @os_run_priority=0, @subsystem=N'SSIS', 
        @command=N'/DTS "\"\File System\INT02-LoadStaging\"" /SERVER appsrv02 /CHECKPOINTING OFF /REPORTING E /DECRYPT xxxxxxx', 
        @database_name=N'master', 
        @flags=8
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

当我运行脚本时,作业被创建,但是当我去查看命令行时,它仍然是默认设置。

我运行作业,但我的数据源密码出错。

我了解到这是旧 SQL 版本中的一个错误,您无法通过 SSMS 更改命令行,这就是我通过脚本创建的原因。

有什么可以做的吗?或者我必须为我的所有包启用包配置文件?

【问题讨论】:

  • 你确定你实际上不想要sp_update_jobstep吗?
  • 我当然需要……这只是工作参数的一部分……
  • 我的意思是:你正在使用sp_add_jobstep。要更改现有作业中的现有步骤,您需要使用sp_update_jobstep。否则,我不确定您所说的“它仍处于默认设置”是什么意思。如果作业是新创建的,什么默认值?你能说得更具体些吗?
  • 我给出的例子是一个全新的测试作业..我只是像上面显示的那样创建它,包括适当的 DECRYPT 开关..但它是使用默认命令行创建的.. .
  • sp_add_jobstep 不关心您的步骤的内容,它只会按原样放置。您可以在创建工作并检查结果后尝试编写工作脚本吗?它应该与您输入的相同。不要使用 Management Studio,因为错误仍然存​​在 - 检查或编辑作业设置仍然不可靠,即使在 SQL Server 2012 中(尚未验证 2014 )。简而言之,试着只运行你的工作,忽略 SSMS 告诉你的任何内容。

标签: sql-server command-line ssis sql-agent-job


【解决方案1】:

不幸的是,通过 Management Studio 编辑 SSIS 作业详细信息并不可靠——我个人在往返包含转义字符串 (/CONNECTION "\"name with spaces\"";) 的复杂命令行时遇到了麻烦,当您打开命令行时,它会被简单地破坏,如果您单击“确定”,这个损坏的版本会被保存回来。

该特定问题似乎已在 SSMS 2014 中得到修复,但编辑器仍将解析命令行并根据其认为正确的内容重新构建它,默默地丢弃它不喜欢的选项,这仍然是事实。您可以通过直接编写作业修改而不使用编辑器来解决此问题,或者(我想)将精力投入到它认为您应该如何做事并坚持下去。我个人更喜欢前者,但我应该补充一点,我没有使用加密的经验,所以就我所知,使用/DECRYPT 可能是个坏主意——不过,一般观点是成立的。

【讨论】:

  • Ms 官方建议,如果选择将敏感数据保存在包中,则必须更改代理定义中的命令行参数。另一种选择是不在包中保存敏感数据并使用包配置文件。但是你说的是真的..我编写了这份工作的脚本,然后运行它就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 2014-01-14
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
相关资源
最近更新 更多