Для SQL Server вы не собираетесь нарушать атомарность команды Delete в пределах одного оператора - даже если он выполняется вне явной транзакции, вы будете действовать в рамках неявной транзакции - например, все или ничего, как вы видели.
В пределах явной транзакции ошибка по умолчанию откатит всю транзакцию, но это можно изменить, чтобы просто попытаться откатить один оператор, который допустил ошибку в общей транзакции (из нескольких операторов). SET XACT_ABORT.
Поскольку ваше удаление - это одно утверждение, XACT_ABORT не может вам помочь - в строке произойдет ошибка, и удаление будет откатано.
Если вы знаете, с какой ошибкой вы столкнетесь (например, нарушение ограничения FK, вы можете убедиться, что у удаления есть подходящее предложение where, чтобы не пытаться удалить строки, о которых вы знаете, что это приведет к ошибке.