| 
	
 | 
 Posted by teddysnips on 08/31/06 08:45 
Below is the script of a Job called "eFIMS_SendEmail" that I wish to 
run.  The intention is that every day of the week the job will execute 
a SPROC at timed intervals.  For example, the SundayRun schedule will 
run once every 1 hours from 00:30:00 to 23:59:59 
 
However, the clients have stated that they want an interface to this to 
enable them easily to change the start time and frequency interval for 
each day.  It's an easy matter for me to paint them a form from within 
the target application to enable the user to enter the start time and 
interval for each day.  I can then pass these as parameters to a SPROC. 
 How can I use these values to change the schedules for the job?  For 
example, if wanted to change SundayRun from once every 1 hours to once 
every 30 mins?  I know I could do it the hard way, by using string 
manipulation (e.g. find string 'SundayRun', then look for the next 
occurrence of @active_start_time, @freq_subday_type, 
@freq_subday_interval etc. and do some replacement) but this seems 
somewhat tricky. 
 
Many thanks 
 
Edward 
 
-- Script generated on 8/31/2006 9:27 AM 
-- By: sa 
-- Server: BISMARK 
 
BEGIN TRANSACTION 
  DECLARE @JobID BINARY(16) 
  DECLARE @ReturnCode INT 
  SELECT @ReturnCode = 0 
IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = 
N'[Uncategorized (Local)]') < 1 
  EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]' 
 
  -- Delete the job with the same name (if it exists) 
  SELECT @JobID = job_id 
  FROM   msdb.dbo.sysjobs 
  WHERE (name = N'eFIMS_SendEmail') 
  IF (@JobID IS NOT NULL) 
  BEGIN 
  -- Check if the job is a multi-server job 
  IF (EXISTS (SELECT  * 
              FROM    msdb.dbo.sysjobservers 
              WHERE   (job_id = @JobID) AND (server_id <> 0))) 
  BEGIN 
    -- There is, so abort the script 
    RAISERROR (N'Unable to import job ''eFIMS_SendEmail'' since there 
is already a multi-server job with this name.', 16, 1) 
    GOTO QuitWithRollback 
  END 
  ELSE 
    -- Delete the [local] job 
    EXECUTE msdb.dbo.sp_delete_job @job_name = N'eFIMS_SendEmail' 
    SELECT @JobID = NULL 
  END 
 
BEGIN 
 
  -- Add the job 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , 
@job_name = N'eFIMS_SendEmail', @owner_login_name = N'sa', @description 
= N'No description available.', @category_name = N'[Uncategorized 
(Local)]', @enabled = 0, @notify_level_email = 0, @notify_level_page = 
0, @notify_level_netsend = 0, @notify_level_eventlog = 2, 
@delete_level= 0 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
 
  -- Add the job steps 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, 
@step_id = 1, @step_name = N'SendEmail', @command = N'EXEC 
stpSendEmailConfirmation', @database_name = N'194-eFIMS', @server = 
N'', @database_user_name = N'', @subsystem = N'TSQL', 
@cmdexec_success_code = 0, @flags = 4, @retry_attempts = 0, 
@retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, 
@on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, 
@start_step_id = 1 
 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
 
  -- Add the job schedules 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, 
@name = N'SundayRun', @enabled = 1, @freq_type = 8, @active_start_date 
= 20060831, @active_start_time = 3000, @freq_interval = 1, 
@freq_subday_type = 8, @freq_subday_interval = 1, 
@freq_relative_interval = 0, @freq_recurrence_factor = 1, 
@active_end_date = 99991231, @active_end_time = 235959 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, 
@name = N'MondayRun', @enabled = 1, @freq_type = 8, @active_start_date 
= 20060831, @active_start_time = 3000, @freq_interval = 2, 
@freq_subday_type = 4, @freq_subday_interval = 30, 
@freq_relative_interval = 0, @freq_recurrence_factor = 1, 
@active_end_date = 99991231, @active_end_time = 235959 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, 
@name = N'TuesdayRun', @enabled = 1, @freq_type = 8, @active_start_date 
= 20060831, @active_start_time = 4000, @freq_interval = 4, 
@freq_subday_type = 4, @freq_subday_interval = 40, 
@freq_relative_interval = 0, @freq_recurrence_factor = 1, 
@active_end_date = 99991231, @active_end_time = 235959 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, 
@name = N'WednesdayRun', @enabled = 1, @freq_type = 8, 
@active_start_date = 20060830, @active_start_time = 3000, 
@freq_interval = 8, @freq_subday_type = 4, @freq_subday_interval = 30, 
@freq_relative_interval = 0, @freq_recurrence_factor = 1, 
@active_end_date = 99991231, @active_end_time = 235959 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, 
@name = N'ThursdayRun', @enabled = 1, @freq_type = 8, 
@active_start_date = 20060831, @active_start_time = 3500, 
@freq_interval = 16, @freq_subday_type = 4, @freq_subday_interval = 35, 
@freq_relative_interval = 0, @freq_recurrence_factor = 1, 
@active_end_date = 99991231, @active_end_time = 235959 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, 
@name = N'FridayRun', @enabled = 1, @freq_type = 8, @active_start_date 
= 20060831, @active_start_time = 3000, @freq_interval = 32, 
@freq_subday_type = 4, @freq_subday_interval = 30, 
@freq_relative_interval = 0, @freq_recurrence_factor = 1, 
@active_end_date = 99991231, @active_end_time = 235959 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, 
@name = N'SaturdayRun', @enabled = 1, @freq_type = 8, 
@active_start_date = 20060831, @active_start_time = 0, @freq_interval = 
64, @freq_subday_type = 8, @freq_subday_interval = 1, 
@freq_relative_interval = 0, @freq_recurrence_factor = 1, 
@active_end_date = 99991231, @active_end_time = 235959 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
 
  -- Add the Target Servers 
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, 
@server_name = N'(local)' 
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
 
END 
COMMIT TRANSACTION 
GOTO   EndSave 
QuitWithRollback: 
  IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION  
EndSave:
 
  
Navigation:
[Reply to this message] 
 |