Запрос к удалённому серверу

roopy
Дата: 24.01.2013 01:57:21
Всем доброго времени суток.

У меня проблема при выполнении цикличного запроса к удалённому серверу.

Если нет соединения с сервером у меня вываливается ошибка и цикл прекращается:
(
OLE DB provider "SQLNCLI10" for linked server "KAMN-SQL" returned message "Login timeout expired".
)

Дело в том что у меня 13 серверов.

Так вот, что можно сделать в случае если не удалось подключиться к удалённому серверу, или как это сделать.
locky
Дата: 24.01.2013 02:12:44
видимо, необходимо написать/переписать обработчик ошибок/исключений?
roopy
Дата: 24.01.2013 02:21:11
locky,

Подскажите как это можно реализовать?
locky
Дата: 24.01.2013 02:37:33
roopy
locky,

Подскажите как это можно реализовать?


как только в моём хрустальном шаре отобразится названия языка, который вы используете для своего приложения - я постараюсь вам помочь
roopy
Дата: 24.01.2013 02:41:10
locky,

Sorry, T-SQL
roopy
Дата: 24.01.2013 02:44:46
DECLARE @DT AS VARCHAR(8), @i int, @x int
DECLARE @_serv AS VARCHAR(100),@_base AS VARCHAR(100),@_descr AS VARCHAR(100), @SQL VARCHAR(8000)
SET @DT = CONVERT (char(8),DATEADD(day,-1,GETDATE()),112)

-- таблица описывающая источники данных для отчёта                                                                        
DECLARE @tt_base table ([ID] [int] IDENTITY(1,1) NOT NULL,
                                                                                              [Serv]  VARCHAR(100), 
                                                                                              [Base]  VARCHAR(100), 
                                                                                              [Descr] VARCHAR(100)
                                                                                              );


INSERT INTO @tt_base (Serv,Base,Descr) VALUES ('Имя сервера','БД','');
INSERT INTO @tt_base (Serv,Base,Descr) VALUES (Имя сервера','БД','');
INSERT INTO @tt_base (Serv,Base,Descr) VALUES ('Имя сервера','БД','');
INSERT INTO @tt_base (Serv,Base,Descr) VALUES ('Имя сервера','БД','');
INSERT INTO @tt_base (Serv,Base,Descr) VALUES ('Имя сервера','БД','');


-- таблица отчёта
IF OBJECT_ID('tt_report') IS NOT NULL DROP TABLE tt_report;
CREATE TABLE [dbo].[tt_report](
                                                                  [Сервер]  VARCHAR(100),
                                                                  [База]  VARCHAR(100),
                                                                  [Наименование]  VARCHAR(100), 
                                                                  [Форма] VARCHAR(1000), 
                                                                  [Путь]  VARCHAR(1000),
                                                                  [Пользователь] VARCHAR(100),
                                                                  [Компьютер] VARCHAR(100),
                                                                  [exec_count] integer
) ON [PRIMARY]

                                                                              
                                                                              
SET @i = (SELECT COUNT(*) FROM @tt_base)

SET @x = 1;
WHILE @x <= @i BEGIN

                SET @_serv = ( SELECT Serv FROM @tt_base WHERE id = @x)
                SET @_base = ( SELECT Base FROM @tt_base WHERE id = @x)
                SET @_descr = ( SELECT Descr FROM @tt_base WHERE id = @x)
                
                SET @SQL = 'INSERT INTO tt_report ([Сервер], [База], [Наименование], [Форма], [Путь], [Пользователь], [Компьютер], [exec_count]) '+
           'SELECT '''+@_serv+''' as Сервер,'''+@_base+''' as База, '''+@_descr+''' as Наименование, Форма, Путь, Пользователь, Компьютер, COUNT(*)'+
                                  'FROM ['+@_serv+'].'+@_base+'.dbo.REG_FORMS with(nolock)'+
                                  'WHERE Т = ''О''
                                  AND ДТ >= '''+@DT+''' AND NOT Форма LIKE ''Документ%'' AND NOT Форма LIKE ''Справочник%'' AND NOT Форма LIKE ''Журнал%'' AND NOT Форма LIKE ''Обработка.%'' AND NOT Форма LIKE ''Отчет.%''
                                  GROUP BY Форма, Путь, Пользователь, Компьютер
           ORDER BY Путь'
                
                exec(@SQL)
                
SET @x= @x+1
END
locky
Дата: 24.01.2013 02:55:27
навскидку в голову приходит только sp_testlinkedserver
roopy
Дата: 24.01.2013 02:59:43
locky,

Сейчас почитаю. Попробую... Спасибо если что напишу.