Как вставить записи в SQL / Server из Access на SQL / Server с помощью «Вставить в» при медленном соединении - PullRequest
1 голос
/ 06 мая 2010

Вот что я попробовал.Что еще я пропустил или должен был попробовать?

Моя ситуация:

  • SQL / Server в другой стране - ненадежное прямое подключение к Интернету, непостоянная стоимость частной линии, состояние линии постоянно меняется(ping от 180 до 500+)
  • Доступ к SQL / Server через VPN-соединение - очень медленный, но чистый / надежный
  • Доступ к базе данных ACCDB (ace) в США - низкий объем, нормально работает
  • Требуется «Вставить в select * from»

Я пробовал все следующее:

DAO - (currentdb.execute) запускает Access SQL, OLEDB-соединение с удаленнымSQL / Server через VPN - может использовать «вставить в» очень медленно.

ADO с использованием Access SQL - даже медленнее.

Только OLEDB, команда SQL, выданная удаленному SQL / Server, может 'Я не вижу локального файла ACCDB, поэтому вам нужно пройтись по набору записей, составив оператор SQL для каждой записи.Очень медленно.Много дополнительного кодирования.

OLEDB Доступ к связанной таблице к SQL / Server.Быстрое чтение данных, очень медленная вставка записей.

SQL / Server на обоих концах.Локальные таблицы связи SQL / Server с ACCDB и с удаленным сервером.Работает, но не улучшает скорость.1000 довольно маленьких записей требуют 5+ минут для вставки.

Массовая вставка.Не могу этого сделать, исходные данные - это не текстовый файл, это ACCDB.Это не разовое преобразование, это ежедневное обновление новых / измененных записей.

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

ЕЩЕ НЕ ПРОБОВАНО: зеркальное отображение / репликация подписчика-издателя SQL / Server для сохранения «виртуальных» локальных удаленных таблиц.

Итак, к удивлению, я обнаружил, что DAOУдаленный ACCDB (без SQL / Server) работает в 20 раз быстрее, чем SQL / Server через VPN.Но я бы предпочел использовать SQL / Server.

Что еще я пропустил или должен был попробовать?

1 Ответ

0 голосов
/ 06 мая 2010

Двойная проверка TCP / IP-соединений включена на SQL Server и фактически используется клиентом (вместо именованных каналов) - если вы используете OLEDB stick ;Network Library=DBMSSOCN в конце строки соединения, чтобы форсировать это.

Вы пытались "вытащить" с удаленного сервера SQL? то есть ваше приложение вызывает хранимую процедуру, которая использует OPENROWSET / OPENQUERY для извлечения данных с локального сервера SQL? - полезно для соединений с асимметричной скоростью вверх / вниз.

...