Sql-Server
如何自動更改作業執行的 ssis 包中的參數?
我有一個執行具有特定參數的包的工作,如下圖所示:
我想將這些參數(黃色的 2 個日期)設置為
1900-01-01
而不是2019-02-27
.我需要這樣做,
automate
因為我有一些要更新的軟體包。我怎樣才能通過腳本完成這項工作?
我一直這樣做的方式是首先使用以下查詢獲取job_id和作業命令:
select @@servername -- this should be on the same server as the job exec msdb.dbo.sp_help_job @job_name = 'Daily DW CA'
即獲取具有您要更新的命令的
job_id
和step_id
您還可以像這樣獲取該資訊:
請注意,這也可以是自動化的,但在這種情況下沒有必要。
select * from msdb.dbo.sysjobs where name ='Daily DW CA'
然後在下面的腳本中使用
@job_id
andstep_id
。下面的腳本會將日期從 更改2019-02-27
為1900-01-01
set nocount on declare @job_id uniqueidentifier = '90D3F4A2-1AC7-4741-BCCA-9A7B64A69B20' declare @step_id int = 1 declare @command NVARCHAR(MAX) declare @sql NVARCHAR(MAX) --a quick select just to check SELECT step_id, step_name, subsystem, command, output_file_name, proxy_id FROM msdb.dbo.sysjobsteps WHERE (job_id = @job_id) AND ((@step_id IS NULL) OR (step_id = @step_id)) ORDER BY job_id, step_id --REPLACE(string, old_string, new_string) SELECT @COMMAND = replace(command,'2019-02-27','1900-01-01') FROM msdb.dbo.sysjobsteps WHERE (job_id = @job_id) AND ((@step_id IS NULL) OR (step_id = @step_id)) ORDER BY job_id, step_id print @command SET @SQL = ' EXEC msdb.dbo.sp_update_jobstep @job_id=N''' + '90d3f4a2-1ac7-4741-bcca-9a7b64a69b20' + ''',' + ' @step_id=1 , ' + '@command=N''' + @command + '' + char(39) print @sql exec sp_executesql @sql
您可以通過查看以下命令來檢查是否一切正常:
exec msdb.dbo.sp_help_job @job_name = 'Daily DW CA'