Применение транзакций для операций записи в SQL Server - PullRequest
0 голосов
/ 16 ноября 2010

Как мне убедиться, что все операции записи в мою БД MS SQL Server основаны на транзакциях?

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

Приложение написано на ASP.NET C #.

Спасибо.

Edit: Существует DAL, но он (пока) не требует транзакций для изменений. Мы сами написали DAL. Мы не использовали ORM.

Я знаю, как выполнить одну транзакцию из ASP.NET.

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

Ответы [ 3 ]

2 голосов
/ 16 ноября 2010

Любой оператор SQL по умолчанию является атомарным, но часто вам нужно выполнить два или более из них и убедиться, что весь набор является атомарным.Поэтому вам нужно вручную запустить и зафиксировать транзакцию.Если вы используете ADO.NET в своем приложении, код может выглядеть следующим образом:

using (SqlConnection db = new SqlConnection("connectionstring"))
{
      db.Open();
      SqlTransaction transaction = db.BeginTransaction();
      try 
      {
         new SqlCommand("update statement", db, transaction).ExecuteNonQuery();
         new SqlCommand("another statement", db, transaction).ExecuteNonQuery();
         // additional operations here
         transaction.Commit();
      } 
      catch (SqlException sqlError) 
      {
         transaction.Rollback();
      }
}
1 голос
/ 16 ноября 2010

Возможно, вы захотите посмотреть на настройку SQL Server для использования неявных транзакций: http://msdn.microsoft.com/en-us/library/ms188317.aspx

0 голосов
/ 16 ноября 2010

Все операции в MS SQL основаны на транзакциях.Но сделки могут быть явными и неявными .

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