2013-05-20 3 views
0

Когда дело доходит до передачи данных между связанными серверами, в моей работе на данный момент было несколько методов.Самая быстрая передача данных по связанному серверу

Мне интересно, есть ли принятый самый быстрый/самый эффективный способ, которым нужно справиться с такой задачей? Или существуют разные ситуации, когда нужно использовать другую?

Я использовал:

OpenQuery

INSERT INTO Table (col1, col2, col3) 
SELECT col1, col2, col3 
FROM OPENQUERY([server]...... 

OpenRowset

INSERT INTO Table (col1, col2, col3) 
SELECT col1, col2, col3 
FROM OPENROWSET('SQLOLEDB', 'Server=[server]....... 

TempTable/SP

INSERT INTO #Temp 
EXEC [server].[db].[dbo].[storedprocedure] @Param1, @Param2 

После некоторого «гуглинга» у меня нет окончательного ответа ... Или есть другой вариант?

ответ

2

Важным моментом является то, что удаленный запрос фактически выполняется удаленно.

Это будет происходить с временным столом/маршрутом sp.

Для других 2 вариантов он может вытащить все данные локально до сортировки/фильтрации и т. Д. Независимо от того, зависит ли это от настроек связанного сервера. Однако у них есть другие недостатки слишком

  • вы не можете контролировать связанные параметры сервера с OPENROWSET, потому что это АПЧРК
  • OPENQUERY и OPENROWSET не позволяют параметры: только строковые константы

Таким образом, вариант 3 лучший маршрут

более подробно см

+0

Отлично, спасибо! Я проверил это - и да, это определенно имеет значение для выполнения процедур удаленно. – William

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