Процедура вылетает по timeout (слишком долго отрабатывает тригер) и транзакция остается открытой. Какие последствия, думаю, известно.
У кого какие предложения, как побороть эту траблу?
Здравствуйте, Аноним, Вы писали:
А>MS SQL Server 2000
А>Процедура вылетает по timeout (слишком долго отрабатывает тригер) и транзакция остается открытой. Какие последствия, думаю, известно. А>У кого какие предложения, как побороть эту траблу?
как насчет переписать триггер? я думаю такая производительность в любом случае никого не устроит!
а вообще надо внутри просто поставить проверку на открытую транзакцию: if (@@TRANCOUNT <>0) COMMIT TRANSACTION
Здравствуйте, sunsquirel, Вы писали:
S>как насчет переписать триггер? я думаю такая производительность в любом случае никого не устроит! S>а вообще надо внутри просто поставить проверку на открытую транзакцию: if (@@TRANCOUNT <>0) COMMIT TRANSACTION
1) Где поставить условие?
2) Скорость отработки тригера не обязательно зависит от кода
C клиента при возниконовении таймаута, 207 и 208 ошибок (м.б. и других) — обязательно сказать rollback. Потому то коммитить непонятно что — себе дороже.
З.Ы. Чтобы не заморачиваться, я бы после любой ошибки говорил rollback. Это, конечно, при условии отсутствия транзакций с клиента.