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


Проверка сведений о секции для подписчика на публикацию слиянием

При определении параметризованного фильтра строк для публикации слиянием используется функция, ссылающаяся на данные подписчика, например на имя входа подписчика. По умолчанию репликация проверяет данные подписчика на основании этой функции перед каждой синхронизацией и при использовании моментального снимка на подписчике. Процесс проверки обеспечивает правильность секционирования данных для каждого подписчика. Характер проверки контролируется свойством публикации validate_subscriber_info, изменить которое можно при помощи sp_changemergepublication (Transact-SQL) или на странице Параметры подписки диалогового окна Свойства публикаций. Дополнительные сведения об изменении свойств публикаций см. в разделе Как просмотреть и изменить свойства публикации (программирование репликации на языке Transact-SQL) и Как просмотреть и изменить свойства публикации и статьи (среда SQL Server Management Studio).

Сведения о работе проверки секции

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

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

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

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