Как обрабатывать несколько ошибок - PullRequest
3 голосов
/ 11 мая 2011

Когда я запускаю что-то вроде

BACKUP LOG [somedb] 
TO DISK = N'i:\log.bak';

Выдает 2 сообщения об ошибках:

Msg 3201, Level 16, State 1, Line 2
Cannot open backup device 'i:\log.bak'. Operating system error 3(The system cannot find    the path specified.).
Msg 3013, Level 16, State 1, Line 2
BACKUP LOG is terminating abnormally.

Когда я пытаюсь обработать ошибку с помощью TRY CATCH, возвращаемая ошибка всегда равна 3013.Это проблема для меня, потому что я хочу знать, не удалось ли выполнить резервное копирование из-за недостатка места, или нет диска и т. Д.

Использование @@ ERROR возвращает тот же номер ошибки.

Есть ли способ обработки нескольких сообщений об ошибках, подобных этим?

1 Ответ

4 голосов
/ 11 мая 2011

Вам необходимо проверить коллекцию Errors внутри SqlException:

catch(SqlException sqlEx)
{
    foreach(SqlError error in sqlEx.Errors)
    {
       int code = error.Number;
       string msg = error.Message;
    }
 }

Вы должны получить все ошибки со всеми соответствующими деталями в SqlException.Errors

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...