SQL Drive getting full delete millions of rows
Batch deletion is your best bet.

If possible, I would do something like:

&lt;create lookup table with a list of PKs or keys of deletable rows&gt;

WHILE 1=1
BEGIN
    DELETE TOP (100000)
    FROM MyBigTable T
    INNER JOIN MyLookupTable L
          ON T.PK = L.PK
    IF @@ROWCOUNT &lt; 100000 BREAK;
END


Batching will keep your log use low, and using the INNER JOIN will reduce tempdb usage since you did the work of filtering in creating the first table.