Как стать автором
Обновить

Комментарии 8

Сравнение с LinkedServer некорректно т.к. LinkedServer предназначен для:
1. постоянного соединения с удаленной базой
2. автоматического обмена

Ваша утилита для ручных операций и, как любое приложение, легко может иметь массу соединений с разными источниками данных, включая несколько SQL серверов.
Замечательно.

Согласитесь, мало кто решится работать с базами через приложение неизвестного разработчика.
Хороший тон — линк на гитхаб, чтоб интересующиеся могли проверить код на безопасность перед использованием.

Удачи.

Openquery делает тоже самое, доступен из коробки, запрос выполняется на удаленном сервере, возвращается только результат

Select * from Openquery ([Linkedservername],'select * from remote_table where a=b') as c

Выборка быстро работает… Но задача — переливка данных.

insert into openquery (...) select ...
работает медленно.

Я думаю, как и вставка через linked server, оно не использует batch insert, а специализированные утилиты используют.

Скорее всего у вас есть доступ к обоим серверам. Значит имеется два Линка, с первого на второй, и со второго на первый. Значит:

1) можно запускать запрос изначально на втором сервере, чтобы забрать данные с первого.

2) как особое извращение, если нет доступа к джобам второго - запустить с первого openquery , в котором на втором сервере исполнится вложенный openquery с запросом к первому серверу. Некрасиво, но перегрузки нет.

По моему опыту, с select нет проблем, что с linked server, что с openquery. А вот update/insert — по 1 стейтменту на каждую строку, 1 сетевой пакет на строку, это не даёт возможность поднять скорость вставки выше нескольких тысяч рекордов в секунду (не путать linked server со ссылкой на другую БД на том же сервере, тут средствами штатного SQL скорости копирования между базами уже нормальные).
1) можно запускать запрос изначально на втором сервере, чтобы забрать данные с первого.
А, вот такой скрипт можно попробовать.
Если хотите, чтобы копирование данных выполнялось с высокой производительностью всегда, ознакомьтесь с этими сатьями в тему:
docs.microsoft.com/ru-ru/previous-versions/sql/sql-server-2008/dd425070(v=sql.100)?redirectedfrom=MSDN
blogs.msmvps.com/gladchenko/loading-performance-guide
зачем заморачиваться с линкедсервер для переливки данных, когда есть старый добрый SSIS?

никакого си шарпа, умения программировать или знания внутренностей sql не надо, любой самый дешевый джун или вчерашний вайтишник может мышкой потыкать и drag&drop-нуть один Data Flow и все. с популяризацией Ажур, то их аналог ADF то же самое делает за пару тыков мышкой

по скорости один из самых быстрых и дешевых способов и легко поддерживаемых даже людьми далекими от тонкостей администрирования баз данных
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации