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

Откуда:
Сообщений: 336
Все удалённые серверы являются прилинкованными, там ничего создавать нельзя, посему только на локальном сервере.
В БД на нескольких удалённых серверах есть хранимая процедура
sp_AddFilter @FilterField, @FilterValue
Она сохраняет переданные ей данные во временную таблицу #Filter (временная таблица должна быть создана заранее). После этого запускается хранимая процедура sp_FillData, которая во временную таблицу #Measures выгребает данные с использованием фильтра в таблице #Filter (таблица #Measures создаётся заранее). В заключение запускается хранимая процедура sp_GetRows, которая выводит содержимое временной таблицы #Measures.

Задача: создать на локальном хранимую процедуру, где будут перебираться БД на удалённых серверах указанным выше способом и полученные данные закачиваться в локальную БД.

Пытался так:
--создаём временную таблицу (что-то проверить существование временной таблицы не удалось)
begin try
   create table [LinkedServer].#Filter ([id] int identity(1,1) not null, [filter] varchar(32) not null, [value] varchar(256) not null)
end try
begin catch
   truncate table [LinkedServer].#Filter
end catch
--далее пытаемся запустить sp_AddFilter, но сторка жалуется, что #Filter не существует
exec [LinkedServer].[DB].dbo.sp_AddFilter 'Source', 'MySource'

У кого какие мысли будут?
18 июл 13, 16:52    [14585232]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из удалённых серверов (распределённая БД)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
=Сергей=
У кого какие мысли будут?

Мысль такая, что вы создаёте временную таблицу не на удалённом сервере, а на локальном.
После создания таблицы выполните команду:
exec tempdb..sp_help '#Filter'

Увидите вашу временную таблицу.
18 июл 13, 17:03    [14585294]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из удалённых серверов (распределённая БД)  [new]
=Сергей=
Member

Откуда:
Сообщений: 336
Гость333
Увидите вашу временную таблицу.

Точно, увидел.

А как можно победить грабли, то есть создать на прилинкованном сервере пару временных таблиц и тут же запустить 3 сторки? :)
18 июл 13, 17:11    [14585341]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из удалённых серверов (распределённая БД)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
=Сергей=,

Ну, например,
EXECUTE ('CREATE TABLE #Filter (...); exec [DB].dbo.sp_AddFilter ... ;') AT [LinkedServer]
18 июл 13, 17:17    [14585394]     Ответить | Цитировать Сообщить модератору
 Re: Получение данных из удалённых серверов (распределённая БД)  [new]
=Сергей=
Member

Откуда:
Сообщений: 336
Гость333,

Спасибо, Вы мне ОЧЕНЬ помогли!
18 июл 13, 17:35    [14585515]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить