Неважно как вы вызываете его;для составной операции вполне возможно, что первая операция будет успешной, а вторая - неудачной (например, нарушение уникального ключа или нарушение внешнего ключа).Если вам нужно убедиться, что все или ничего, то окружите вызов Execute*
транзакцией и выполняйте коммит только тогда, когда вы знаете, что все работает.
Вы также можете создавать транзакции на уровне SQL, ноинструменты в вашем распоряжении легче ошибиться, если вы сделаете это в TSQL.Это делает, чтобы отдать должное, избегать нескольких поездок в оба конца - но обычно не настолько, чтобы стоило бороться с языком, чтобы сделать это.В конечном счете, SQL предназначен для хороших операций DML на основе множеств - он не так хорош в более процедурном коде, таком как управление потоком выполнения.