Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
profil Member Откуда: Москва Сообщений: 1713 |
уважаемые, подскажите пожалуйста написал я скрипт проверки корректности кофигурирования системы. там есть проверка доступности таблицы на ЛинкедСервере:
если нельзя - можно сделать проверку доступности таблицы менее критичным способом? |
|
14 апр 05, 13:03 [1468031] Ответить | Цитировать Сообщить модератору |
Веселов Константин Member Откуда: Новосибирск Сообщений: 208 |
Если не предпринимать никаких специалных действий, то скрипт должен продожить свое выполнение и так. Сейчас не скажу точно, но только после воникновения какого-то количества ошибок подряд (несколько) сервер прерывает выполнение пакета. |
14 апр 05, 13:12 [1468099] Ответить | Цитировать Сообщить модератору |
profil Member Откуда: Москва Сообщений: 1713 |
в том то и дело что не выполняет...Server: Msg 17, Level 16, State 1, Procedure ... |
14 апр 05, 13:22 [1468182] Ответить | Цитировать Сообщить модератору |
Веселов Константин Member Откуда: Новосибирск Сообщений: 208 |
Саму ошибку погасить никак нельзя (на сервере), но при ее возникновении скрипт все равно отрабатывает до конца (см. выше) |
14 апр 05, 13:26 [1468221] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Неа. Ошибка обращения к linked server валит весь бэтч |
||
14 апр 05, 13:28 [1468236] Ответить | Цитировать Сообщить модератору |
Веселов Константин Member Откуда: Новосибирск Сообщений: 208 |
Опишите как Вы выполняете проверку на linked - сервере |
14 апр 05, 13:31 [1468256] Ответить | Цитировать Сообщить модератору |
profil Member Откуда: Москва Сообщений: 1713 |
2Glory получается это никак нельзя обойти? грамотно можно организовать если только на клиенте? |
||
14 апр 05, 13:35 [1468289] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Самый приблизительный способ это exec master..xp_cmdshell 'ping <linkedserver ip or name>' Более продвинутый способ exec master..xp_cmdshell 'odbcping /SMyServer /Usa /PsaPassWord' Еще более продвинутый способ использовать процедуры sp_OA* и SQLDMO для создания проверки возможности коннекта к удаленному серверу Самый продвинутый - написать расширенную хп с тем же SQLDMO и проверкой возможности коннекта. И наконец самый самый продвинутый - это использовать для импорта DTS :) Ибо все предыдущие способы не гарантируют вам, что удаленный сервер будет доступен после проверки коннекта. Он же может отвалится сразу же после этой проверки |
14 апр 05, 13:44 [1468360] Ответить | Цитировать Сообщить модератору |
Веселов Константин Member Откуда: Новосибирск Сообщений: 208 |
|
|
14 апр 05, 13:49 [1468390] Ответить | Цитировать Сообщить модератору |
profil Member Откуда: Москва Сообщений: 1713 |
спасибо, Glory, буду пробывать самые продвинутые методы ![]() 2 Веселов Константин тоже спасибо но у меня такая проверка присутствует, но она не избавляет от ситуаций, когда сервер существует, но в нем отсутствует таблица, либо нет прав на нее, да вобщем и когда удаленнй сервер не доступен... |
14 апр 05, 14:13 [1468534] Ответить | Цитировать Сообщить модератору |
profil Member Откуда: Москва Сообщений: 1713 |
|
||||
19 окт 05, 02:02 [1981913] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Durist
Guest |
Попробовал обозначенную технологии в приведенной статье. Действительно пакет продолжает работать, не останавливается. Но у меня возвращается вот такое сообщение Msg 53, Level 16, State 1, Line 0 Named Pipes Provider: Could not open a connection to SQL Server [53]. а select @@ERROR возвращает 0. Т.е. в результате не могу понять доступен ли сервера :( Обращался к серверу прилинкованному, но которого заведома нет в сети. Подскажите, где грабли? |
30 ноя 06, 15:20 [3473756] Ответить | Цитировать Сообщить модератору |
Durist
Guest |
Сорри, забыл сказать. У меня Microsoft SQL Server 2005 - 9.00.2153.00 |
30 ноя 06, 15:22 [3473768] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Определение недоступности линкед-сервера |
30 ноя 06, 15:38 [3473924] Ответить | Цитировать Сообщить модератору |
Durist
Guest |
Ну и зачем ссылку давать на ту же самую статью? Читал я ее. Вдохновился. Попробовал. НО в @@ERROR 0 получаю!!!! |
30 ноя 06, 16:05 [3474179] Ответить | Цитировать Сообщить модератору |
-=DiM@n=- Member Откуда: Москва Сообщений: 1564 |
В 2005 есть процедура sp_testlinkedserver, которая как раз проверяет соединение со связанным сервером.DECLARE @ret int; EXEC @ret = sp_testlinkedserver @servername = LinkServerName; IF @ret = 0 PRINT 'На связи :0)'; ELSE PRINT 'Нет связи :0('; |
30 ноя 06, 16:42 [3474527] Ответить | Цитировать Сообщить модератору |
Durist
Guest |
Спасибо -=DiM@n=- . Блин, век живи, век учись... |
1 дек 06, 10:30 [3477186] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
MakPol Member Откуда: Сообщений: 101 |
Правильно я понимаю, что проверка доступности при помощи sp_testlinkedserver осуществляется не моментально? У меня, например при попытке проверить доступность 1:46 (1 минуту 46 секунд) думает, а только потом выводит сообщение:
Правда если указать несуществующий линкедсервер тогда тут же ругнется. Правильно я понимаю, что все это зависит от времени ожидания соединения? |
||
17 мар 15, 16:26 [17395535] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
MakPol, время ожидание на каждый активный протокол. |
17 мар 15, 16:44 [17395621] Ответить | Цитировать Сообщить модератору |
MakPol Member Откуда: Сообщений: 101 |
А есть способ проверить моментально доступен сервер или нет? Я предполагал, что это и есть sp_testlinkedserver, но при недоступности он выдает ошибку, вместо того чтобы вернуть код ошибки. Я тогда не совсем понимаю как в случае недоступности линкедсервера правильно проверить. |
17 мар 15, 16:55 [17395684] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Как вы себе это представляете, если процесс установления соединения проходит в несколько шагов ? Пропустить некоторые из них, не дожидаясь завершения ? |
||
17 мар 15, 17:09 [17395761] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
сами верните себе номер ошибки и/или сообщение: begin try exec sp_testlinkedserver @servername = ...; select 'ok' end try begin catch set @err = ERROR_MESSAGE(); --raiserror(@err, 10, 1); select ERROR_NUMBER() ,@err; end catch проблема же была, что batch прерывался... |
||
17 мар 15, 19:10 [17396320] Ответить | Цитировать Сообщить модератору |
MakPol Member Откуда: Сообщений: 101 |
Да, абсолютно верно, я в топике устроил офтоп отодя от темы изначальной. Прошу прощения. Просто увлекся. Попробую найти другой способ чтобы быстро проверить доступность 100 с лишним разнесенных по разным площадкам серверов. После проверки на доступных через rpc буду выполнять действия. Большое спасибо за ответы. |
17 мар 15, 21:35 [17396795] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
https://msdn.microsoft.com/en-us/library/ms180992.aspx |
||
17 мар 15, 21:58 [17396842] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
вы видимо ткскыть жертва собственной же терминоглогии ![]() "быстро проверить доступность" - это что? есть ли такой сервер? можно ли к нему подключиться клиенту? Ну так здесь и будут накладные расходы на установку коннекта, таймауты и пр. Елси же просто типа пинга, то это только необходимое условие. Напишите SQL CLR или отдельную утилиту, которая в несколько потоков будет проверять вашу сотню и т.д. |
||
18 мар 15, 11:33 [17398447] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |