Поделиться через


Как отключить отслеживание операций удаления для статей публикации слиянием (программирование репликации на языке Transact-SQL)

ПримечаниеПримечание

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.

По умолчанию репликация слиянием производит синхронизацию команд DELETE между издателем и подписчиком. Репликация слиянием позволяет извлекать строки из базы данных подписки даже в том случае, если они были удалены из публикации (и наоборот). При создании новой статьи можно отключить выполнение команд DELETE программным путем, либо сделать это позже с помощью хранимых процедур репликации.

Важное примечаниеВажно!

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

Отключение обработки команд удаления для новой статьи слияния

  • В базе данных публикации на издателе, выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_addmergearticle (Transact-SQL)). В параметре @delete_tracking укажите значение false. Дополнительные сведения см. в разделе Как определить статью (программирование репликации на языке Transact-SQL).

    ПримечаниеПримечание

    Если исходная таблица для статьи уже опубликована в другой публикации, значение delete_tracking должно быть одинаковым для обеих статей.

Отключение обработки команд удаления для существующих статей слияния

  1. Чтобы определить, включена ли компенсация ошибок для статьи, выполните хранимую процедуру sp_helpmergearticle (Transact-SQL) и в результирующем наборе проверьте значение параметра delete_tracking. Если это значение равно 0, то команды удаления уже не обрабатываются.

  2. Если на шаге 1 получено значение 1, то в базе данных публикации на издателе необходимо выполнить хранимую процедуру sp_changemergearticle (Transact-SQL). В параметре @property укажите значение delete_tracking, а в параметре @value — значение false.

    ПримечаниеПримечание

    Если исходная таблица для статьи уже опубликована в другой публикации, значение delete_tracking должно быть одинаковым для обеих статей.