/* Delete all news items older than XX days It should be done first*/ print 'Delete all news items older than XX days...' begin transaction DECLARE @id_to_clean table(id int NOT NULL); insert into @id_to_clean select ph.id from attrib_vals left outer join ph_to_attrvals on attrib_vals.id = ph_to_attrvals.attrval_id left outer join ph on ph.id = ph_to_attrvals.ph_id where attrib_vals.deleted=0 and attrib_vals.type = 5 and attrib_vals.attr_id=1 and attrib_vals.ForNewsBrowser=1 and ph.deleted=0 and ph.AddDate<(dateadd( day, -14, CURRENT_TIMESTAMP)) ALTER TABLE [PH_TO_ATTRVALS] DISABLE TRIGGER OnPhToAttrVals ALTER TABLE [ph] DISABLE TRIGGER ModifyPH /* Clear all attribute links for deleted items (#3730)*/ DELETE FROM [PH_TO_ATTRVALS] WHERE Ph_ID IN (select * from @id_to_clean) update ph set deleted=1, modifydate=CURRENT_TIMESTAMP where id in(select * from @id_to_clean) ALTER TABLE [PH_TO_ATTRVALS] ENABLE TRIGGER OnPhToAttrVals ALTER TABLE [ph] ENABLE TRIGGER ModifyPH commit transaction GO /*Delete lost attrib links*/ print 'Delete lost attrib links...' begin transaction ALTER TABLE ph_to_attrvals DISABLE TRIGGER OnPhToAttrVals delete from ph_to_attrvals where id in (select distinct ph_to_attrvals.id from ph_to_attrvals, attrib_vals where attrib_vals.id = ph_to_attrvals.attrval_id and attrib_vals.deleted = 1) delete from ph_to_attrvals where id in (select distinct ph_to_attrvals.id from ph_to_attrvals, ph where ph.id = ph_to_attrvals.ph_id and ph.deleted = 1) ALTER TABLE ph_to_attrvals ENABLE TRIGGER OnPhToAttrVals commit transaction GO /*Clear recycle bin*/ print 'DELETE FROM PH...' begin transaction ALTER TABLE ph_to_attrvals DISABLE TRIGGER OnPhToAttrVals DELETE FROM PH where deleted=1 AND modifydate<(dateadd( day, -7, CURRENT_TIMESTAMP)) AND 0 = (select count(*) from mp_phonograms where ph_id=PH.id) ALTER TABLE ph_to_attrvals ENABLE TRIGGER OnPhToAttrVals commit transaction GO /*Clear recycle bin*/ print 'DELETE FROM ATTRIB_VALS...' DELETE FROM ATTRIB_VALS where deleted=1 AND modifydate<(dateadd( day, -1, CURRENT_TIMESTAMP)) GO /*Clear recycle bin*/ print 'DELETE FROM CAT_JNGL_BTNS...' DELETE FROM CAT_JNGL_BTNS where deleted=1 AND modifydate<(dateadd( day, -1, CURRENT_TIMESTAMP)) GO /*Clear Old Scheule elems*/ print 'DELETE FROM PLIST_ELEMS...' DELETE FROM PLIST_ELEMS where not exists(select id from PLIST_BLOCKS where id = PLIST_ELEMS.BlockID) GO /*Clear Old Scheule elems*/ print 'DELETE FROM PLIST_ELEMS...' DELETE FROM PLIST_ELEMS where BlockID in(select ID FROM PLIST_BLOCKS where [date] < (dateadd( day, -3, CURRENT_TIMESTAMP))) GO /*Clear Old Scheule Blocks*/ print 'DELETE FROM PLIST_BLOCKS...' DELETE FROM PLIST_BLOCKS where [date] < (dateadd( day, -3, CURRENT_TIMESTAMP)) GO /*Clear Old Changes*/ print 'DELETE FROM MODIFY_DATES...' DELETE FROM MODIFY_DATES where modifydate< (dateadd( day, -1, CURRENT_TIMESTAMP)) GO /*Clear sch_files*/ print 'DELETE FROM SCH_FILES...' DELETE FROM SCH_FILES where SchDate < (dateadd( day, -3, CURRENT_TIMESTAMP)) GO /*Delete old DDB blocks info*/ print 'Delete old DDB blocks info...' DELETE FROM P_BLOCKS where BlkDate < (dateadd( day, -3, CURRENT_TIMESTAMP)) GO /*Delete playback history older than 100 days*/ print 'Delete playback history older than 100 days...' DELETE FROM PH_PLAY_HISTORY where PlayTime<(dateadd( day, -100, CURRENT_TIMESTAMP)) GO /*Delete plan history older than 100 days*/ print 'Delete plan history older than 100 days...' DELETE FROM PH_PLAY_PLAN where PlayTime<(dateadd( day, -100, CURRENT_TIMESTAMP)) GO /* Delete old MAG2 shedule orders*/ print 'Delete old mag schedule orders' DELETE FROM [dbo].[MAG2_WORK] where WorkDate< dateadd( day, -14, GETDATE()) GO /*Delete PH_HISTORY rows older than 30 days*/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[PH_HISTORY]') AND type in (N'U')) BEGIN PRINT N'Delete PH_HISTORY rows older than 30 days' DECLARE @MinDate datetime SELECT @MinDate=dateadd(d,-30, GETDATE()) DELETE FROM [dbo].[PH_HISTORY] WHERE ModifyDate < @MinDate END GO /*Truncating transaction log file for current database*/ print 'Truncating transaction log file for current database...' declare @ver int declare @ver_str varchar(128) set @ver_str = convert(varchar(128),SERVERPROPERTY('ProductVersion')) set @ver = cast( left(@ver_str, charindex('.', @ver_str)-1) as int ) declare @db_name varchar(128), @dbcc_query varchar(256) SELECT @db_name = DB_NAME() if (@ver < 10) BEGIN set @dbcc_query='BACKUP LOG ['+@db_name+'] WITH TRUNCATE_ONLY' EXEC (@dbcc_query) END set @dbcc_query='DBCC SHRINKDATABASE (['+@db_name+'], 0)' EXEC (@dbcc_query) GO