2016-04-24 1 views
0

Ситуация такова: у нас есть база данных подписчиков репликации SQL Server, которая получает реплицированные данные из одной из наших основных OLTP-систем, которые мы используем в качестве источника для заполнения нашего хранилища данных. (также наша база данных OLTP размещена сторонним поставщиком).Могу ли я удалить определенные данные из базы данных подписчиков репликации SQL Server без нарушения репликации?

Чтобы повысить производительность подписчика, я хотел бы удалить строки данных, которые старше установленного нами предела хранения данных. Мы не можем сделать это в базе данных издателя и удалить эти репликации, потому что это будет дорогостоящим (вендор), и это может усугубить другие бизнес-единицы, используя интерфейс.

Я хотел бы знать, могу ли я продолжить и выполнить удаление данных в базе данных подписчика, не нарушая (а) нарушение репликации, или (б), когда репликация просто повторно заполняет эти удаленные строки. Это возможно?

ответ

0

Да, это возможно. Строки, которые вы удаляете на подписчике, будут уходить и уходить. Репликация не будет прерываться, потому что в худшем случае может быть реплицирован оператор DELETE или UPDATE, который затем не будет удалять/обновлять что-либо (что не является ошибкой).

Одно важное предостережение: если вам нужно повторно инициализировать подписку (что может быть необходимо по разным причинам, например, если происходит повреждение данных на подписчике или какая-то * CENSORED * вставляет данные, которые не должны были быть вставлены и разрывы репликации), будет создан новый моментальный снимок, который включает удаленные строки, которые затем снова появятся на подписчике. Вам придется повторно запустить свои удаления и позаботиться о том, чтобы они не генерировали огромную нагрузку, если есть много строк для удаления (более вероятно, путем их пакетной обработки).