SQL Server: вставка на связанный сервер - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь решить проблему с производительностью при вставке данных на связанный сервер в SQL Server:

Если я попытаюсь вывести таблицу с первого сервера в таблицу на втором сервере с помощью «Вставить в» (за которым следует либо Openquery, либо просто имя из 4 частей в таблицу назначения второго сервера), это займет более 60 секунд:

INSERT INTO Server2.DB2.dbo.Target
SELECT * FROM DB1.dbo.Source

Если я выполню запрос на втором сервере , предложив ему прочитать те же данные с первого сервера и вставить их в таблицу на втором сервере, потребуется ~ 3 секунды - но чистый результат такой же (таблица на втором сервере, заполненная данными):

INSERT INTO DB2.dbo.Target
SELECT * FROM Server1.DB1.dbo.Source

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

Для более широкого контекста: Я пытаюсь оптимизировать кучу хранимых процедур, которые запускаются каждый день на первом сервере, и эта проблема, похоже, накапливает много времени для ежедневной работы. Настройка второго сервера (вне моего контроля) не позволяет мне запрашивать все таблицы на первом сервере, чтобы вместо этого просто выполнить все процедуры там.

...