Хотя репликация обычно устойчива, бывают случаи, когда она может прерваться и потребовать обновления. Управление и поддержание репликации может стать сложным. Как только основная база данных будет усечена, вам нужно будет убедиться, что действие не реплицируется. Вам также может понадобиться улучшенная система идентификации строк, так как после нескольких усеченных таблиц первичной базы данных у вас все равно будет полная история в вторичной базе данных.
Произошло падение производительности на издателе (первичном), так как для чтения журнала транзакций необходимо запустить дополнительные потоки. Если вы не находитесь под большой нагрузкой в данный момент, вы, скорее всего, не заметите этот эффект. Управление журналом транзакций также может стать более важным.
Вместо этого я бы посмотрел на другое решение вашей проблемы. Например, перед усечением вы можете сделать резервную копию базы данных и восстановить ее как новое имя базы данных. После этого у вас есть копия базы данных, которая была до усечения, и вы можете запросить оба сразу, используя имена из трех частей.
Вы упомянули, что целью вторичных данных является сохранение отчета. В этом случае вы можете создать представление, подобное SELECT * FROM Primary.dbo.Table UNION ALL SELECT * FROM SecondaryDBJune2008.dbo.Table UNION ALL SELECT * FROM SecondaryDBOctober2008.dbo.Table. Затем вам нужно будет поддерживать это представление в актуальном состоянии всякий раз, когда вы выполняете усечение.
Другой альтернативой было бы сделать снимок текущих данных перед усечением и вставить их в одну базу данных отчетов. Тогда у вас просто будут базы данных Primary и Historical - нет необходимости изменять представления после их создания.
Сколько данных мы говорим в ГБ?
Поскольку вы планируете выполнять усечение один раз в два дня, я бы порекомендовал второй вариант, снимок данных перед усечением в одну базу данных истории. Это легко сделать с помощью задания агента SQL, не беспокоясь о том, что репликация поддерживает синхронизацию двух наборов данных.