|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Есть вызов Код: c# 1. 2. 3. 4.
На инсерт есть триггер, который проверяет что-то и делает Код: sql 1. 2. 3. 4. 5. 6. 7.
Этот триггер не генерирует Exception. Каждый раз, даже когда триггер не добавляет запись и делает роллбек здесь object objid = cmd1.ExecuteScalar(); возвращается 2 Что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 16:52 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Ролг Хупин, А что вернет Select * from log? Там мах id не 2? SCOPE_IDENTITY (Transact-SQL) - это читали? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 17:04 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
BlackEricРолг Хупин, А что вернет Select * from log? Там мах id не 2? SCOPE_IDENTITY (Transact-SQL) - это читали? нет, там не 2, а 258 читал, а толку? вопрос не в этом. Если руками выполняю в ССМС тот же запрос, выловленный в профайлере получаю: Код: sql 1. 2. 3. 4.
А в c# коде нет Exception и создается впечатление, что запрос отработал успешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 17:12 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Ролг Хупин, тело триггера покажите пож. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 17:50 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Я воспроизвел Таблица: Код: sql 1. 2. 3. 4. 5. 6.
Инсерты: Код: sql 1. 2. 3. 4.
Триггер: Код: 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.
Запрос падающий из студии: Код: sql 1. 2. 3. 4. 5.
Оно же из шарпа нормально отрабатывает (не падает): Код: c# 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. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 18:27 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Не сорри, падает как положено ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 18:30 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
BlackEric, а попробуйте изменить триггер Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 18:41 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Если для таблицы не предполагается использовать MERGE, то вовсе не нужно селектить количество строк в inserted - достаточно проверить @@rowcount до установки set nocount on (в случае merge ситуация другая ). А исключение пробрасывается вполне нормально: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
в консоли: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 06:20 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
BlackEricНе сорри, падает как положено а у меня нет эскцепции ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 12:34 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Ролг Хупин, Подключите Profiler и посмотрите попадает ли сервер в блок где у вас raiserror ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 23:26 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
felix_ffРолг Хупин, Подключите Profiler и посмотрите попадает ли сервер в блок где у вас raiserror Не нужен никакой профайлер - raiserror с severity<=10 не прерывает процесс выполнения, и не попадает в блок catch, достаточно его с опцией nowait (чтобы сообщение возвращалось сразу же, а не по окончании всего батча) поместить в блок с rollback, и ловить сообщения от сервера - см. выше мой код. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2017, 04:57 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Сон Веры Павловныfelix_ffРолг Хупин, Подключите Profiler и посмотрите попадает ли сервер в блок где у вас raiserror Не нужен никакой профайлер - raiserror с severity<=10 не прерывает процесс выполнения, и не попадает в блок catch, достаточно его с опцией nowait (чтобы сообщение возвращалось сразу же, а не по окончании всего батча) поместить в блок с rollback, и ловить сообщения от сервера - см. выше мой код. у меня 16 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2017, 12:02 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Ролг Хупину меня 16 Я видел. Severity>10 - для выбрасывания ошибок, и их обработки в блоке catch (если нужно), severity<=10 - для вывода сообщений. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2017, 12:05 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныРолг Хупину меня 16 Я видел. Severity>10 - для выбрасывания ошибок, и их обработки в блоке catch (если нужно), severity<=10 - для вывода сообщений. Нашел, где я лоханулся,хотя до конца так и не понял причину: во время отладки триггера оставил пару выборок типа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2017, 13:08 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Ролг ХупинСон Веры Павловныпропущено... Я видел. Severity>10 - для выбрасывания ошибок, и их обработки в блоке catch (если нужно), severity<=10 - для вывода сообщений. Нашел, где я лоханулся,хотя до конца так и не понял причину: во время отладки триггера оставил пару выборок типа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
и это в SSMS и выборки делает и роллбэчится, а при вызове из шарпа тихо отрабатывает и выдает 2 и никакого роллбэка ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2017, 13:14 |
|
c#->SQLServer: Нет Exception при роллбэке в триггере
|
|||
---|---|---|---|
#18+
Ролг Хупин, роллбак происходит... брехня. не происходит он только если @@rowcount определяется после select count(*) И да... тах работает скаляр. Получил результат и досвидос... если нужна такого рода богодельня - пользуйте костыли ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2017, 13:52 |
|
|
start [/forum/topic.php?fid=20&msg=39531752&tid=1399671]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 167ms |
0 / 0 |