Technical Article

SQL-LOG-DAILY CYCLE - Job Script

,

Simple job script to cycle the SQL Log ever 24 hours
The job is set to disabled as you should review any script that creates a job before enabling it on your server.

-- Simple Job Script to cycle the SQL Error Log every 24 hours
-- 	1. Should set the SQL Log files retention to 15 days (default = 6)
-- 	2. This assists in keeping large logs manageable
--Jbabington@hotmail.com
-- NOTES:
--	@output_file_name is a settable path value
-- 	@enabled is set to 0 (disabled) so you can review the 
--		job before attempting to run it
--	@owner_login_name Set to SA however you may wish to use
--		another existing service account
-- 	@active_start_time = 235900 This is 11:59:00 PM 
--		and is alterable as needed



BEGIN TRANSACTION            
  DECLARE 	@JobID 		BINARY(16)  
  DECLARE 	@ReturnCode 	INT    
  SELECT 	@ReturnCode 	= 0     
IF (SELECT COUNT(*) 
FROM msdb.dbo.syscategories 
	WHERE name = N'Database Maintenance') 	< 1 
EXECUTE msdb.dbo.sp_add_category @name 		= N'Database Maintenance'

-- Delete the job with the same name (if it exists)
  
SELECT @JobID 		= job_id     
  FROM   msdb.dbo.sysjobs    
  WHERE (name = N'SQL-LOG-DAILY CYCLE')       
  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 ''SQL-LOG-DAILY CYCLE'' 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'SQL-LOG-DAILY CYCLE' 
    SELECT @JobID = NULL
  END 

BEGIN 

  -- Add the job
  
EXECUTE @ReturnCode 		= msdb.dbo.sp_add_job @job_id = @JobID OUTPUT 
	,@job_name 		= N'SQL-LOG-DAILY CYCLE'
	,@owner_login_name 	= N'SA'
	,@description 		= N'Cycle the SQL Server Error log every 24 hours'
	,@category_name 	= N'Database Maintenance'
	,@enabled 		= 1
	,@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'Cycle Log (SQL Error Log)'
	, @command 		= N'EXEC SP_CYCLE_ERRORLOG'	
	, @database_name 	= N'master'
	, @server 		= N''
	, @database_user_name 	= N''
	, @subsystem 		= N'TSQL'
	, @cmdexec_success_code = 0
	, @flags 		= 0
	, @retry_attempts 	= 0
	, @retry_interval 	= 1
	, @output_file_name 	= N'C:\Program Files\Microsoft SQL Server\MSSQL\LOG\CYCLE_SQL_ERRORLOG'--Settable Path
	, @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'CYCLE SQL ERROR LOG DAILY'
, @enabled 			= 0 -- currently disabled to enable set to 1 
, @freq_type 			= 4
, @active_start_date 		= 20040920
, @active_start_time 		= 235900
, @freq_interval 		= 1
, @freq_subday_type 		= 1
, @freq_subday_interval 	= 0
, @freq_relative_interval 	= 0
, @freq_recurrence_factor 	= 0
, @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:

Rate

5 (1)

You rated this post out of 5. Change rating

Share

Share

Rate

5 (1)

You rated this post out of 5. Change rating