【发布时间】: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