• So what we are looking at is a rolling delete process

    My preference (for codeability) would be a sproc in the database that takes two arguments Tablename to be deleted and Days to Keep

    The sproc would build a dynamic SQL statement to remove the records

    NOTE the code below has not been checked, it is symantec rather than syntactic.

    CREATE PROCEDURE dbo.uspDeleteOldData (@TableName nvarchar(50), @DaysToKeep int default = 90)

    AS

    DECLARE @SQL as nvarchar(max)

    SET @SQL = N'DELETE FROM ' + @TableName + ' WHERE CreateDate <= ''' + cast(DateAdd(days,(@DaysToKeep * -1), getdate()) as nvarchar)

    sp_executeSQL @SQL

    I would then build an SSIS package that simply has a list of SQL tasks that calls the sproc for each table you need to clean up.

    NOTE that you may end up with lots of sparsely populated index pages so you will need to clean up the database on a regular basis to remove the unused space.