Technical Article

MOM SCDWgroom Enhancement

,

It might not be useful now, but if you ever wanted to downsize the amount of data that you keep in your datawarehouse, good luck.  This will help you do that.  This job is set to shrink it down to 120 days, but you can adjust it as you like.  Runs again in 5 day increments with each run.

USE [msdb]
GO
/****** Object:  Job [SCDWGroomJob]    
 ****** Created By:  Sean Gorman
 ****** Purpose: If you ever wanted to downsize the amount of data that
	you keep in your datawarehouse, good luck.  This will help you do that.
	This job is set to shrink it down to 120 days, but you can adjust it as
	you like.  Runs again in 5 day increments with each run. 

Script Date: 07/19/2007 15:36:59 ******/



BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 07/19/2007 15:36:59 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'SCDWGroomJob', 
		@enabled=1, 
		@notify_level_eventlog=2, 
		@notify_level_email=0, 
		@notify_level_netsend=0, 
		@notify_level_page=0, 
		@delete_level=0, 
		@description=N'Job that executes the datawarehouse grooming stored procedure.

The first step slowly increments the number of groom days from the current setting down to 120.  It will not increment lower than 120.  Change this step''s code to change the data retention period for the MOM Reporting Database (gormans1)', 
		@category_name=N'[Uncategorized (Local)]', 
		@owner_login_name=N'CLEANHARBORS\SQL_MOM_DAS', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [DWGroomingStep]    Script Date: 07/19/2007 15:37:00 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'DWGroomingStep', 
		@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=1, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'EXECUTE dbo.p_GroomDatawarehouseTables', 
		@database_name=N'SystemCenterReporting', 
		@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [Increment Down the Number of GROOM_DAYS]    Script Date: 07/19/2007 15:37:00 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Increment Down the Number of GROOM_DAYS', 
		@step_id=2, 
		@cmdexec_success_code=0, 
		@on_success_action=1, 
		@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'DECLARE @current_groomdays INT
DECLARE @new_groomdays INT

SET @current_groomdays = (
										SELECT top 1 wcs.WCS_GroomDays
										FROM WarehouseClassSchema wcs
										JOIN ClassSchemas cs
										ON cs.CS_ClassID = wcs.WCS_ClassID
										WHERE cs.CS_TableName = ''SC_AlertFact_Table'' OR
										cs.CS_TableName = ''SC_AlertHistoryFact_Table'' OR
										cs.CS_TableName = ''SC_AlertToEventFact_Table'' OR
										cs.CS_TableName = ''SC_EventFact_Table'' OR
										cs.CS_TableName = ''SC_EventParameterFact_Table'' OR
										cs.CS_TableName = ''SC_SampledNumericDataFact_Table'' AND
										wcs.WCS_MustBeGroomed = 1
										)

IF @current_groomdays > 120
	BEGIN
	SET @new_groomdays = (@current_groomdays - 5)
		Exec p_updategroomdays ''SC_AlertFact_Table'', @new_groomdays
		Exec p_updategroomdays ''SC_AlertHistoryFact_Table'', @new_groomdays
		Exec p_updategroomdays ''SC_AlertToEventFact_Table'', @new_groomdays
		Exec p_updategroomdays ''SC_EventFact_Table'', @new_groomdays
		Exec p_updategroomdays ''SC_EventParameterFact_Table'', @new_groomdays
		Exec p_updategroomdays ''SC_SampledNumericDataFact_Table'', @new_groomdays
	END', 
		@database_name=N'SystemCenterReporting', 
		@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'MOMX DW Groom Job Schedule', 
		@enabled=1, 
		@freq_type=4, 
		@freq_interval=1, 
		@freq_subday_type=1, 
		@freq_subday_interval=0, 
		@freq_relative_interval=0, 
		@freq_recurrence_factor=0, 
		@active_start_date=20070212, 
		@active_end_date=99991231, 
		@active_start_time=30000, 
		@active_end_time=235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating