Я пытаюсь настроить одностороннюю репликацию транзакций с SQL Server 2008 R2 на PostgreSQL 9.1. Я пробую провайдер PGNP OLE DB.
Я могу успешно создать подписку, и транзакции действительно реплицируются на сервер PG. Я использую sync_type = 'none' в подписке, потому что в противном случае кажется, что в противном случае схема, включая специфические параметры SQL Server (SET ANSI_NULLS ON и т. Д.), Будет отправлена в PostgreSQL, что испортит ее.
Это нормально, я могу использовать SSIS и копировать всю свою базу данных, включая данные. У меня вопрос, как я могу сделать это безопасным способом? Потому что, если я просто запустил пакет SSIS для экспорта данных, а затем добавлю подписку, транзакции могут быть потеряны.
Например. SSIS экспортирует данные в PG. Строка X обновлена. Репликация начинается. В этом случае обновление строки X не будет в моей ручной синхронизации, но репликация началась после. И я не могу запустить репликацию, потому что могут произойти другие ошибки.
Какая здесь правильная процедура?
У меня несколько раз возникала подобная проблема. Уловка для этого - настроить 2 подписки
Итак, вот вся процедура:
Обратите внимание, что пока агент чтения журнала остановлен, транзакции на издателе будут зависать в журнале издателя. Так что будьте осторожны, чтобы он не разлился. Шаг 5 (копирование данных) может быть довольно длинным, поэтому настройте достаточно большой журнал на первичном (в зависимости от объема транзакции).
Кстати, если вы установите для sync_type значение «automatic», агент моментального снимка создаст снимок, который также будет правильно синхронизирован. Где моя награда?
Попробуйте эту статью Шпаргалка репликации SQL Server