답변:
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'<stepname>', @step_id=1, @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'TSQL', @command=N'<code>', @database_name=N'', @flags=0
DECLARE @jobId BINARY(16) SET @jobId = (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = '<job name, to which you want to copy the steps>') -- Followed by all the msdb.dbo.sp_add_jobstep from the script that scripted out in the earlier step EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'<stepname>', @step_id=1, @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'TSQL', @command=N'<code>', @database_name=N'', @flags=0
작업 2에서 TSQL 명령 유형의 작업 단계를 작성하십시오. 컨텐츠에서 기존 작업 ( sp_start_job )을 실행하십시오.
EXECUTE msdb.dbo.sp_start_job 'Job1'
비동기식으로 실행되므로 저장 프로 시저 호출을 시작한 후 작업의 다음 단계로 돌아와서 수행합니다. 시작된 작업이 완료 될 때까지 기다리지 않습니다. 호출 된 작업이 실패하면 호출 작업으로 다시 침투되지 않습니다.
Job1을 마우스 오른쪽 버튼으로 클릭하고 새 쿼리로 스크립트 창 이를 Job2로 반복 한 다음 필요에 따라 작업 단계를 1에서 2로 스레드하십시오. 휠을 재생성하는 것보다 클릭이 훨씬 적고 오류 발생 가능성이 적습니다.
stackoverflow에서 (mafafu)
WAITFOR DELAY '00:00:02';
while exists (select * from msdb.dbo.sysjobs j
inner join msdb.dbo.sysjobactivity a on j.job_id = a.job_id
where name = 'Job 1'
and stop_execution_date is null and start_execution_date is not null)
begin
PRINT 'Waiting...'
WAITFOR DELAY '00:00:02';
end