Репликация транзакций SQL Server для очень больших таблиц

Я настроил репликацию транзакций между двумя SQL-серверами на разных концах относительно медленного VPN-соединения. Настройка - это стандартная вещь типа «немедленно загрузить моментальный снимок», когда первое, что она делает после инициализации подписки, - это отбрасывает и воссоздает все таблицы на стороне подписчика, а затем начинает выполнять BCP для всех данных. Проблема в том, что есть несколько таблиц с несколькими миллионами строк в них, и процесс либо а) занимает ДЕЙСТВИТЕЛЬНО много времени, либо б) полностью завершается неудачей. Когда я смотрю в Replication Monitor, я получаю следующие сообщения:

  • Процесс запущен и ожидает ответа от сервера.
  • Истекло время ожидания запроса
  • Инициализация

Затем он пытается перезапустить процесс массовой загрузки (пропуская любые уже загруженные файлы BCP).

В настоящее время я застрял там, где он просто повторяет это снова и снова. Уже пару дней работает.

Мои вопросы:

  1. Могу ли я что-то сделать, чтобы улучшить эту ситуацию, учитывая, что сетевое соединение такое медленное? Может какая настройка что ли? Я не возражаю против долгого ожидания, пока не истечет время ожидания процесса.

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


person jeremcc    schedule 05.12.2008    source источник


Ответы (2)


да. Вы можете применить начальный моментальный снимок вручную.

Для меня это было давно, но ссылка (в BOL) имеет альтернативы настройке подписчика.

Изменить: из инструкций BOL, Инициализируйте транзакционного подписчика из резервная копия

person gbn    schedule 05.12.2008
comment
По вашему мнению, я нашел здесь лучший способ: msdn.microsoft.com/en-us/library/ms147834 (SQL.90) .aspx. Если вы отредактируете свой пост с этим, я приму это как ответ. - person jeremcc; 06.12.2008

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

Думаю, вы легко сможете оценить потенциальный прирост скорости, сравнив размеры стандартных и сжатых снимков.

Кстати, есть (вполне) похожий вопрос здесь для репликации слиянием, но я думаю, что на уровне снимков разницы нет.

person Philippe Grondier    schedule 07.12.2008