Есть ли разница между транзакциями в asp.net и хранимой процедурой - PullRequest
1 голос
/ 19 августа 2011

Если у меня есть 3 запроса sql, и все три должны быть выполнены или ни одного. Есть ли разница, если я напишу этот запрос в коде asp.net или хранимой процедуре?

Ответы [ 5 ]

2 голосов
/ 19 августа 2011

Оба являются допустимыми способами для управления транзакциями.Преимущество использования хранимой процедуры заключается в меньшем сетевом трафике, возможно, более быстром выполнении, лучшей инкапсуляции содержимого базы данных и т. Д., В то время как использование asp.net позволяет задействовать некоторую высокоуровневую логику или использовать части вашего другого программирования, которые могут влиять на то, чтозапросы делают.

2 голосов
/ 19 августа 2011

Если вы делаете все для текущего соединения на одном экземпляре БД, то в основном вы не увидите никакой разницы в использовании транзакций T-SQL (BEGIN TRAN / COMMIT TRAN) или транзакций ADO.NET (TransactionScope, BeginTransaction ...)

Но учтите, что вы можете сгруппировать несколько соединений (запросов к нескольким экземплярам БД) в одну транзакцию, используя область транзакции.

1 голос
/ 19 августа 2011

Вы можете использовать TransctionScope в .NET таким же образом, как и транзакцию в базе данных.

Будьте осторожны, чтобы выбрать правильный уровень изоляции .1006 *

По умолчанию TransactionScope выполняется с уровнем изоляции Serializable.Это, вероятно, не то, что вы хотите.

Уровень изоляции базы данных по умолчанию, скорее всего, будет зафиксирован для чтения.

0 голосов
/ 19 августа 2011

При использовании SqlConnection.BeginTransaction() разницы нет.

Этот вопрос, тем не менее, является возможным дубликатом В чем разница между транзакцией SQL на уровне хранимой процедуры и транзакцией на уровне SqlConnection

0 голосов
/ 19 августа 2011

По соображениям эффективности лучше написать SP с транзакцией, которая откатывается при ошибке. Хотя бы для простоты, прямого SQL и того факта, что SP один раз скомпилирован, для более быстрого выполнения в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...