2014-01-27 4 views
0

Я пытаюсь вставить данные из таблицы на одной машине в таблицу на другой машине, если эта запись не существует, но я не уверен, как это сделать.вызов хранимой процедуры вставки на другом компьютере с использованием TSQL

Для уточнения

Там в таблицу с именем tblAssortments на сервере X.

Там в таблице с именем сортиментов на сервере Y.

сервер у имеет хранимая процедура с именем RegisterAssortment вида:

BEGIN 
    SET NOCOUNT ON; 

    if not exists (select 1 from AssortmentRegEx where id = @id and code = '^' + @ProductCode + '$') 
    begin 
     insert into AssortmentRegEx 
     values (newid(), 1, @id, '', '1,2', '^' + @ProductCode + '$', '', @ProductCode) 
    end 
END 

На машине X есть хранимая процедура с именем SynchronizeAssortments. Предполагается открыть курсор и пропустить все записи. Затем он вызывает RegisterAssortment для каждой записи.

Но вот где я застрял. Я попытался использовать openquery для вызова sproc на другой машине, но он не работает для операторов insert. Что-то вроде этого:

while @@fetch_status = 0 
begin 
    openquery(ws422, 'exec yy.dbo.RegisterAssortment ', @ProductCode, @id) 

    fetch next from assortmentCursor 
end 

но openquery не работает, как это. Каков хороший способ решить эту проблему?

ответ

1

Попробуйте добавить связанный сервер. Используйте sp_addlinkedserver или в SSMS, который находится в разделе «Серверные объекты». Затем вы можете получить доступ к связанному серверу с сервера, на котором вы добавили ссылку, просто префикс с именем сервера: server.database.dbo.table.

+0

Это была действительно связанная проблема с сервером, и нет необходимости в openquery. Его работа теперь благодарит вас – Laurijssen

Смежные вопросы