|
Cчетчик транзакций после выполнения EXECUTE показывает несовпадение числа
|
|||
---|---|---|---|
#18+
Ошибка: Счетчик транзакций после выполнения EXECUTE показывает несовпадение числа инструкций BEGIN и COMMIT. Предыдущее число = 1, текущее число = 0. Я понимаю почему она происходит, но как её обойти не могу понять... Суть такая, есть начальная процедура, имеет примерно такой вид: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
С хранимке MyStoredProc идёт цепочка вызова хранимок, где-то в недрах этой цепочки происходит ошибка в блоке CATCH, и тут нюанс, нужно в таблицу лога внести ошибку. Там делается: Код: sql 1. 2. 3. 4. 5.
По выходу из процедуры возникает ошибка, которую написал выше. Тут вопрос, или как обойти? Или как записать в таблицу лог ошибки?, так чтоб он не откатился с вызовом ROLLBACK TRANSACTION в первичной хранимке. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 15:48 |
|
Cчетчик транзакций после выполнения EXECUTE показывает несовпадение числа
|
|||
---|---|---|---|
#18+
Игорь_UUS, Код: sql 1. 2.
Попробуйте использовать такой упрощённый шаблон для обработки ошибок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
С его помощью в случае возникновения системной или внутренней ошибки получите трек вызова, если это рукотворное исключение, то без стека. Внесите изменения во все процедуры, где это возможно. Для решения задачи с записью в журнал ошибок можно воспользоваться уведомлением о событиях. https://docs.microsoft.com/ru-ru/sql/relational-databases/service-broker/event-notifications?view=sql-server-ver15 Уведомления работают независимо от состояния транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 19:01 |
|
Cчетчик транзакций после выполнения EXECUTE показывает несовпадение числа
|
|||
---|---|---|---|
#18+
Игорь_UUS как обойти? Игорь_UUS как записать в таблицу лог ошибки?, так чтоб он не откатился с вызовом ROLLBACK TRANSACTION в первичной хранимке. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 20:15 |
|
Cчетчик транзакций после выполнения EXECUTE показывает несовпадение числа
|
|||
---|---|---|---|
#18+
invm Игорь_UUS как обойти? Игорь_UUS как записать в таблицу лог ошибки?, так чтоб он не откатился с вызовом ROLLBACK TRANSACTION в первичной хранимке. в некоторых случаях лог можно писать так: 1. сначала в @ таблицу, а после коммита/роллбэка писать в лог таблицу 2. сбрасывать логи в брокер, там ловить и писать тоже мимо транзакций ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 12:34 |
|
|
start [/forum/topic.php?fid=46&fpage=13&tid=1684239]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 260ms |
total: | 410ms |
0 / 0 |