Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / "Серверный" откат клиентской транзакции / 3 сообщений из 3, страница 1 из 1
15.04.2003, 14:55
    #32141132
Alexei Petrakov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Серверный" откат клиентской транзакции
Есть приложение на С#, использующее ADO.NET.
Внутри одного из методов приложения делаю следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
открываю тразакцию (BeginTransaction)
try
  запускаю запрос к БД
  подтверждаю транзакцию (Commit)
catch
  откатываю транзакцию (Rollback)
end //of try-catch


То есть, если происходит ошибка, то транзакция откатывается, если всё в порядке - подтверждается. Используется экземпляр класса System.Data.SqlClient.SqlTransaction.
Всё вроде хорошо работает, но запрос вставляет данные в некую таблицу, на который висит триггер, проверяющий целостность. Если вставляемые данные нарушают её, то триггер откатывает вставку (в теле триггера есть команда rollback tran). В итоге после срабатывания триггера, когда управление переходит на оператор commit или rollback внутри программы, то происходит исключение, так как транзакция уже отменена триггером.
Вопрос: можно ли как-то узнать, что транзакция уже отменена (или подтверждена) на сервере и её не следует откатывать вновь в приложении?

Списибо.

ПС: сервер: MS SQL 2000, триггер менять нельзя.
...
Рейтинг: 0 / 0
15.04.2003, 15:10
    #32141159
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Серверный" откат клиентской транзакции
Есть в MS SQL Server переменная такая, @@TRANCCOUNT, кажется, называется. Можно ею воспользоваться.
...
Рейтинг: 0 / 0
15.04.2003, 17:19
    #32141351
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Серверный" откат клиентской транзакции
а если так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
try
{
  запускаю запрос к БД
  подтверждаю транзакцию (Commit)
}
catch (...)
{
 try
 {
  откатываю транзакцию (Rollback)
 }
 catch (SqlException sqex) 
 { 
...
}
}
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / "Серверный" откат клиентской транзакции / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]