Намерих за полезно, когато правя изтривания от таблица с голям брой редове, да изтривам редове на партиди от около 5000 (обикновено тествам, за да видя коя стойност работи най-бързо, понякога са 5000 реда, понякога 10 000 и т.н.) . Това позволява на всяка операция за изтриване да завърши бързо, вместо да чака дълго време, докато един оператор изтрие 400 милиона записа.
В SQL Server 2005 нещо подобно трябва да работи (моля, първо тествайте, разбира се):
WHILE EXISTS ( SELECT * FROM giganticTable WHERE exp_date < getDate())
BEGIN
DELETE TOP(5000) FROM giganticTable WHERE exp_date < getDate()
END
Бих видял какво прави изтриването на партиди с размера на регистрационния файл. Ако все още раздухва регистрационните файлове, можете да опитате да промените модела за възстановяване на Прост , изтриване на записите и след това превключване обратно към Bulk Logged, но само ако системата може да толерира загубата на някои скорошни данни. Определено бих направил пълно архивиране, преди да опитам тази процедура. Тази нишка също предлага, че бихте могли да настроите задание за архивиране на регистрационните файлове с посочено само съкращаване, така че това може да е друга опция. Надяваме се, че имате екземпляр, с който можете да тествате, но бих започнал с пакетните изтривания, за да видя как това се отразява на производителността и размера на регистрационния файл.