Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Есть ли смысл в транзакциях на SQL server, если транзакция на клиенте? / 4 сообщений из 4, страница 1 из 1
15.07.2008, 10:40
    #35430356
relief
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в транзакциях на SQL server, если транзакция на клиенте?
Привет!

у меня последовательно вызывается 3 процедуры на клиенте. Поэтому делаю там
Код: plaintext
sqlCmd.Transaction = sqlConn.BeginTransaction();

Вопрос: есть ли смысл каждую процедуру на сервере делать также в транзакции?

Смысл в том, что вроде хуже не будет, но тут с ошибкой столкнулся, которую не смог решить. А именно: после
Код: plaintext
sqlCmd.Transaction = sqlConn.BeginTransaction();
в процедуре было так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 SET TRAN ISOLATION LEVEL SERIALIZABLE 
  BEGIN TRAN		
			
	..........											
	BEGIN
		SET @res = - 1 
		IF @@TRANCOUNT >  0  ROLLBACK TRAN
                       RETURN  0 
            END
COMMIT TRAN

и при ролбэк получал
Код: plaintext
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count =  1 , current count =  0 

почему? вроде всё правильно делаю
...
Рейтинг: 0 / 0
15.07.2008, 13:11
    #35430985
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в транзакциях на SQL server, если транзакция на клиенте?
да забей,ты на столь умный механизм транзакций в ado.net.

по коннекту своему отдавай begin tran команду
потому commit tran или rollback.
и все.
забей на их объект транзакции,он такой не удобный для понимания и совсем не мобильный .
...
Рейтинг: 0 / 0
15.07.2008, 13:44
    #35431092
Белый Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в транзакциях на SQL server, если транзакция на клиенте?
Плодить лишние транзакции не стоит. Так что либо используйте ado.net-транзакции, либо отключайте автокоммит и тогда уже используйте BEGIN TRAN/ROLLBACK TRAN. Какой вариант лучше - зависит от того, где логика приложения сконцентрирована.
...
Рейтинг: 0 / 0
17.07.2008, 22:19
    #35437967
Чорный Бада
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли смысл в транзакциях на SQL server, если транзакция на клиенте?
reliefи при ролбэк получал
Код: plaintext
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count =  1 , current count =  0 

Есть у SQL server такое правило, что у хранимки @@TRANCOUNT на входе и выходе должен быть одинаковым - иначе он кидает ашыпку.

Поэтому, при разработке хранимки если неизвестно откуда и как она будет вызваться следует это учитывать. Я обычно делаю что-нибудь типа этого:

[SRC tsql]
DECLARE @ownTran bit

IF @@TRANCOUNT > 0
SET @ownTran = 0
ELSE BEGIN
SET @ownTran = 1
BEGIN TRAN
END

...
...

-- Success
IF @ownTran = 1
COMMIT TRAN
RETURN 0

OnError:
IF @ownTran = 1
ROLLBACK TRAN[/SRC]
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Есть ли смысл в транзакциях на SQL server, если транзакция на клиенте? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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