Delete records from large tables in batches without growing the Transaction Log in SQL Server.

set nocount on;

declare @deletedRowCount int;
set @deletedRowCount = 1;

while @deletedRowCount > 0
    begin
        begin transaction;

        -- Delete a some small number of rows at a time:
        delete top (10000)
        LargeTable
        where CreatedAt < dateadd(month, -7, getdate());

        set @deletedRowCount = @@ROWCOUNT;
        commit transaction;

        -- CHECKPOINT;    -- if simple
        -- BACKUP LOG ... -- if full
    end;