У меня есть производственная база данных, размещенная на SQL Server 2008R2 Standard, которая реплицируется на второй сервер, на котором работает та же версия SQL-сервера, через подписку на производственную базу данных. База данных подписчиков используется для запуска отчетов SQL по данным. Удаления не реплицируются, поэтому база данных отчетов довольно велика по сравнению с опубликованной производственной базой данных, которая очищается еженедельно.
Я планирую заменить сервер, на котором размещена опубликованная база данных, и мне было интересно, что лучше всего сделать, чтобы база данных подписчиков не потеряла никаких данных. Это разумный план следующих шагов:
Это так просто, или есть что-то, что я пропустил, что могло обернуться и укусить меня? Главное, что я хочу убедиться, - это то, что база данных, используемая для отчетности (подписанная база данных), не теряет никаких данных и продолжает получать новые реплицированные данные из новой базы данных.
Спасибо
Ваш план правильный, за исключением того, что вам нужно будет указать @sync_type из только поддержка репликации для sp_addsubscription который предполагает, что у подписчика уже есть схема и начальные данные для опубликованных таблиц, и он не будет инициализироваться, тем самым пропуская отбрасывание.
Если вы используете Мастер новой подписки, то же самое можно сделать, выбрав Не инициализировать на Инициализировать подписки страница.
Уловка будет в том, как вы синхронизируете. В хранимой процедуре sp_addarticle значение по умолчанию для параметра @pre_creation_cmd - отбрасывать таблицу на подписчике. Это будет проблемой для вас. Вот как я могу это сделать:
Я также предлагаю вам воспользоваться этой возможностью, чтобы создать более безопасное место для ваших архивных данных. Если когда-либо репликация ломается сама по себе (может и случается), вы окажетесь в сложной ситуации с повторной инициализацией. Если бы мне пришлось это сделать, я бы создал специальную процедуру, которая вызывается репликацией (вы можете указать ее с помощью параметра @del_cmd для sp_addarticle), которая вставляет запись в вашу архивную таблицу, а затем выполняет удаление из вашей живой таблицы. Но есть множество способов добиться того же. Удачи.