|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
Всем привет! Столкнулся с непонятной для меня ситуацией. Задача: Нужно отловить ошибку в блоке try..catch. Сценарий: два MSSQL (15.0.4153.1) соединение через ( SQLNCLI или MSOLEDBSQL ) на сервере А процедура с ошибкой выполнения Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
на сервере Б делаем ее вызов в блоке try..catch Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
в результате ошибка не отлавливается, то есть нет сообщения 'словили ошибку'. но если убрать print или set nocount on перед raiserror в процедуре на сервере А, то все работает как надо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 08:30 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
sergio2021, попробуйте Код: sql 1.
или Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 10:13 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
komrad, так уже пробовал. конечно есть решение сделать процедуру обёртки Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
и вызывать ее Но хотел бы понять природу ошибки. И найти другое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 10:26 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
sergio2021 Всем привет! Столкнулся с непонятной для меня ситуацией. Задача: Нужно отловить ошибку в блоке try..catch. ... в результате ошибка не отлавливается, то есть нет сообщения 'словили ошибку'. но если убрать print или set nocount on перед raiserror в процедуре на сервере А, то все работает как надо! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 14:58 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
sergio2021, используйте return для возврата ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 18:14 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
HandKot, Спасибо, но это таже обертка но с другой стороны. Владислав Колосов, ретурн получается, только если подавить экцепшн. Код: sql 1. 2. 3. 4.
тогда сработает: Код: sql 1. 2.
но мне нужно отловить текст ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2021, 18:39 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
sergio2021 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Инструкция THROW учитывает SET XACT_ABORT . Инструкция RAISERROR — нет. В новых приложениях следует использовать инструкцию THROW вместо RAISERROR. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 10:30 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
Uridian, Не помогает( https://www.sommarskog.se/error_handling/Appendix1.html вот здесь есть: Erland SommarskogSo more in general, if you have a remote procedure that runs with SET NOCOUNT ON and first produces an informational message (for instance with PRINT) and then produces an error, you cannot trap this error with TRY-CATCH in your local procedure. видимо нужно избавляться от PRINT. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 11:43 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
sergio2021, возвращайте код ошибки с минусом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 12:52 |
|
nocount on, print и try..catch через linked server
|
|||
---|---|---|---|
#18+
Владислав Колосов, уже пробовал, см. выше. Не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2021, 15:27 |
|
|
start [/forum/topic.php?fid=46&fpage=14&tid=1684304]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
70ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 248ms |
total: | 415ms |
0 / 0 |