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

Откуда:
Сообщений: 5
Всем доброго времени суток.

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

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

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

Так вот, что можно сделать в случае если не удалось подключиться к удалённому серверу, или как это сделать.
24 янв 13, 01:57    [13818958]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к удалённому серверу  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
видимо, необходимо написать/переписать обработчик ошибок/исключений?
24 янв 13, 02:12    [13818977]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к удалённому серверу  [new]
roopy
Member

Откуда:
Сообщений: 5
locky,

Подскажите как это можно реализовать?
24 янв 13, 02:21    [13818989]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к удалённому серверу  [new]
locky
Member

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

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


как только в моём хрустальном шаре отобразится названия языка, который вы используете для своего приложения - я постараюсь вам помочь
24 янв 13, 02:37    [13819010]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к удалённому серверу  [new]
roopy
Member

Откуда:
Сообщений: 5
locky,

Sorry, T-SQL
24 янв 13, 02:41    [13819016]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к удалённому серверу  [new]
roopy
Member

Откуда:
Сообщений: 5
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
24 янв 13, 02:44    [13819020]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к удалённому серверу  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
навскидку в голову приходит только sp_testlinkedserver
24 янв 13, 02:55    [13819032]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к удалённому серверу  [new]
roopy
Member

Откуда:
Сообщений: 5
locky,

Сейчас почитаю. Попробую... Спасибо если что напишу.
24 янв 13, 02:59    [13819035]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить