Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как перехватить ошибку  [new]
Belkin
Member

Откуда: Рязань
Сообщений: 461
Добрый день.
Есть удаленный сервер с FireBird с которого через OpenQuery переливаю данные на SQL Server с заданой переодичностью.
OpenQuery работает через DBLink, который ссылается на ODBC(через драйвер FireBird)
Бывает, что удаленный комп выключен, тогда OpenQuery выпадает в ошибку:
OLE DB provider "MSDASQL" for linked server "b_88" returned message "[ODBC Firebird Driver]Unable to complete network request to host "192.168.111.88".
Failed to establish a connection.".
Msg 7399, Level 16, State 1, Line 4
The OLE DB provider "MSDASQL" for linked server "b_88" reported an error. Authentication failed.
Msg 7303, Level 16, State 1, Line 4
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "b_88".

Изначально писал код с TRY...CATCH, но это не помогло отловить ошибку.
Возможно ли отловить эту ошибку? Если да, то как?

Заранее благодарен.
-----------
Андрей.
26 сен 12, 09:40    [13222932]     Ответить | Цитировать Сообщить модератору
 Re: Как перехватить ошибку  [new]
Belkin
Member

Откуда: Рязань
Сообщений: 461
Строка из BOL меня настораживает
Конструкция TRY…CATCH перехватывает все ошибки исполнения с кодом серьезности, большим 10, которые не закрывают соединения с базой данных.

Есть какой способ перехвата такой ошибки?
26 сен 12, 09:48    [13222982]     Ответить | Цитировать Сообщить модератору
 Re: Как перехватить ошибку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Belkin
Возможно ли отловить эту ошибку? Если да, то как?
Только на клиенте. Это ошибка времени компиляции, она не отловится в TRY...CATCH
26 сен 12, 10:47    [13223478]     Ответить | Цитировать Сообщить модератору
 Re: Как перехватить ошибку  [new]
Belkin
Member

Откуда: Рязань
Сообщений: 461
alexeyvg,

Спасибо.
Значит job будет просто отваливаться, пока не подключится удаленная машина.
26 сен 12, 11:14    [13223700]     Ответить | Цитировать Сообщить модератору
 Re: Как перехватить ошибку  [new]
Читатель неместный
Guest
автор
BEGIN TRY
EXEC sp_testlinkedserver N'serv'
END TRY
BEGIN CATCH
...
END CATCH
а почему такое не должно работать?
26 сен 12, 11:30    [13223855]     Ответить | Цитировать Сообщить модератору
 Re: Как перехватить ошибку  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Читатель неместный, вы отловите только один вид ошибок, притом только если не отвалится сразу же после "теста".

Но задачу ТС решит в большей степени.
26 сен 12, 11:44    [13224004]     Ответить | Цитировать Сообщить модератору
 Re: Как перехватить ошибку  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Belkin,

Заверните ваш запрос в динамику, это уберет взрывы на уровне компилации.
А для проверки работоспособности удаленного сервера создайте линкед сервер на ваш локальный сервер и через него пробуйте соединение с удаленным. В таком случае ошибку можно отловить и она не прерывает стейтмент выполнения.
26 сен 12, 12:00    [13224138]     Ответить | Цитировать Сообщить модератору
 Re: Как перехватить ошибку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Belkin
alexeyvg,

Спасибо.
Значит job будет просто отваливаться, пока не подключится удаленная машина.
Ага.

Но можно использовать один из советов выше - динамику или проверку доступности.
26 сен 12, 12:05    [13224180]     Ответить | Цитировать Сообщить модератору
 Re: Как перехватить ошибку  [new]
Belkin
Member

Откуда: Рязань
Сообщений: 461
Читатель неместный,
А такой вариант должен подойти.
Потестил, работает на стенде.
Запущу как в эксплуатацию и посмотрим.
Спасибо за подсказку!
26 сен 12, 12:57    [13224700]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить