• I'm sure there's no need for the view, I'd just loop on the identity coulmn(or another suitable indexed column) and delete where less than min(ident column ) + 2000 depending on the seed.

    I guess I'm old school but I wouldn't like to rely on a top always bringing back the rows I wanted to delete, to be 100% and use a variable in the where clause, just in case ansi or the optimiser changes how the top statement works.