After a while,the msdb database can be overloaded with backup history, and clearing that history can be a pain. You can use the t-sql code below to clear the msdb backup history, in incremental steps of 1 week.
use msdb
go
declare @retentionDate datetime = DATEADD(MONTH, -3, getdate())
declare @oldest_date datetime = (select min(backup_start_date) from msdb.dbo.backupset)
while (@oldest_date < @retentionDate)
begin
print 'sp_delete_backuphistory ' + CAST(@oldest_date AS varchar)
exec msdb.dbo.sp_delete_backuphistory @oldest_date
-- Delete by 1 week increments
set @oldest_date = DATEADD(WEEK, 1, @oldest_date)
checkpoint
end
exec msdb.dbo.sp_delete_backuphistory @retentionDate
go