SSIS预定作业不保留命令行更改

时间:2014-10-14 10:11:07

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

我将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改变命令行,这就是我通过脚本创建的原因。

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

1 个答案:

答案 0 :(得分:1)

遗憾的是,通过Management Studio编辑SSIS作业详细信息并不可靠 - 我个人在使用包含转义字符串(/CONNECTION "\"name with spaces\"";)的复杂命令行时遇到了麻烦,其中命令行被简单地修改了你打开它,如果你点击&#34; OK&#34;那么这个受损的版本会被保存回来。

这个特殊问题似乎已在SSMS 2014中得到修复,但编辑器将解析命令行并根据其认为正确的方式重新构建它仍然是正确的,并且默默地丢弃它没有的选项。喜欢。你可以通过直接编写作业修改脚本来解决这个问题,而不是使用编辑器,或者(我想)会深入研究它认为你应该做的事情,并坚持这一点。我个人更喜欢前者,但我应该补充一点,我没有使用加密的经验,所以我知道使用/DECRYPT可能是一个坏主意 - 但总的来说就是这样。