Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server База данных SQL Azure
В этом разделе описывается, как проверить данные на подписчике в SQL Server с помощью SQL Server Management Studio, Transact-SQL или объектов управления репликацией (RMO).
Транзакционная репликация и репликация слиянием позволяют проверить, что данные у Подписчика соответствуют данным у Издателя. Проверку можно выполнять как для конкретных подписок, так и для всех подписок для публикации. Задайте один из следующих типов проверки и агент распространителя или агент слияния проверят данные при следующем запуске.
- Только подсчет строк. При проверке этого типа проверяется совпадение числа строк таблицы на подписчике с числом строк таблицы на издателе, но не проверяется содержимое строк на совпадение. Проверка количества строк обеспечивает упрощенный подход к проверке, который может уведомить о проблемах с данными.
- Количество строк и двоичная контрольная сумма. Помимо подсчета количества строк таблицы у издателя и подписчика, с использованием алгоритма checksum вычисляется контрольная сумма всех данных. Если проверка количества строк завершается неудачей, вычисление контрольной суммы не выполняется.
Помимо проверки того, что данные у подписчика и издателя совпадают, репликация слиянием позволяет проверить, что данные правильно разделены на секции для каждого подписчика. Дополнительные сведения см. в статье Проверка сведений о разделе для подписчика слиянием.
Примечание.
Управляемый экземпляр SQL Azure может быть издателем, распространителем и подписчиком для репликации моментальных снимков и транзакций. Базы данных в База данных SQL Azure могут выступать только как подписчики типа push для репликации моментальных снимков и транзакционной репликации. Дополнительные сведения см. в статье о репликации транзакций с Базой данных SQL Azure и Управляемым экземпляром SQL Azure.
Как работает проверка данных
SQL Server проверяет данные, вычисляя количество строк или контрольную сумму на издателе, а затем сравнивая эти значения с числом строк или контрольной суммой, вычисляемой на подписчике. Одно значение вычисляется для всей таблицы публикации, одно — для всей таблицы подписки, но данные в столбцах типа text, ntextи image в вычислении не участвуют.
При выполнении вычислений временно устанавливаются совместные блокировки таблиц, для которых производится подсчет числа строк или контрольных сумм, однако вычисления вскоре завершаются и общие блокировки снимаются, обычно в течение нескольких секунд.
При использовании двоичных контрольных сумм 32-разрядная циклическая избыточная проверка (CRC) выполняется для каждого столбца отдельно, а не для физической строки на странице данных. Это позволяет столбцам таблицы располагаться физически в любом порядке на странице данных, и при этом CRC-код для строки будет оставаться прежним. Проверка по двоичной контрольной сумме может использоваться при наличии у публикации фильтров по строкам или столбцам.
Проверка данных состоит из трех этапов:
Одна или все подписки на публикацию помечаются для проверки. Пометьте подписки для проверки в диалоговом окне "Проверка подписки", "Проверка подписок" и "Проверка всех подписок", которые доступны в папке "Локальные публикации" и в папке "Локальные подписки" в Microsoft SQL Server Management Studio. Подписки также можно отмечать на вкладке Все подписки, вкладке Список отслеживания подписок и в узле публикаций в окне «Монитор репликации». Сведения о запуске монитора репликации см. в разделе Запуск монитора репликации.
Подписка проверяется при следующей синхронизации, выполняемой агентом распространения (для транзакционной репликации) или агентом слияния (при репликации слиянием). Агент распространителя, как правило, работает постоянно, то есть проверка выполняется немедленно. Агент слияния запускается по запросу, в этом случае проверка выполняется после запуска агента.
Просмотрите результаты проверки.
- В окнах сведений монитора репликации: на вкладке Журнал операций от распространителя к подписчику для репликации транзакций и на вкладке Журнал синхронизации для репликации слиянием.
- В диалоговом окне "Просмотр состояния синхронизации" в Management Studio.
Рекомендации и ограничения
При проверке данных учитывайте следующие соображения.
- Перед проверкой данных следует остановить все действия по обновлению на подписчиках (при выполнении проверки нет необходимости останавливать действия на издателе).
- Поскольку контрольные суммы и двоичные контрольные суммы при проверке большого набора данных могут требовать значительных ресурсов процессора, следует планировать проверку так, чтобы она выполнялась в то время, когда нагрузка на серверы, используемые для репликации, минимальна.
- Репликация проверяет только таблицы; она не проверяет, совпадают ли статьи типа «только схема» (например, хранимые процедуры) на Издателе и Подписчике.
- Двоичная контрольная сумма может использоваться с любой опубликованной таблицей. Контрольная сумма не может выполнять проверку таблиц с фильтрами по столбцам или логических структур таблиц, в которых смещения столбцов различаются (из-за операторов ALTER TABLE, которые удаляют или добавляют столбцы).
- При проверке репликации вызываются функции checksum и binary_checksum . Сведения об их поведении см. в статьях CHECKSUM (Transact-SQL) и BINARY_CHECKSUM (Transact-SQL).
- Проверка с использованием двоичной контрольной суммы или контрольной суммы может ошибочно сообщать о сбое, если типы данных у подписчика отличаются от типов данных у издателя. Это может произойти, если выполнить одно из следующих действий:
- Явно задайте параметры схемы для сопоставления типов данных для более ранних версий SQL Server.
- Задайте для публикации слияния уровень совместимости публикации с более ранней версией SQL Server, если опубликованные таблицы содержат один или несколько типов данных, которые должны быть сопоставлены с этой версией.
- Инициализируйте подписку вручную, если на стороне подписчика используются разные типы данных.
- Двоичная контрольная сумма и проверки контрольной суммы не поддерживаются для трансформируемых подписок в репликации транзакций.
- Проверка не поддерживается для данных, реплицируемых подписчикам, не являющимся SQL Server.
- Процедуры монитора репликации используются только для принудительных подписок, так как в мониторе репликации нельзя синхронизировать подписки по запросу. Однако в мониторе репликации можно пометить подписку для проверки и просмотреть результаты проверки для подписок по запросу.
- Результаты показывают, как завершилась проверка — успешно или неудачно, но в случае ошибки строки, не прошедшие проверку, не указываются. Для сравнения данных издателя и подписчика используется tablediff Utility. Дополнительные сведения об использовании этой служебной программы с реплицированными данными см. в статье "Сравнение реплицированных таблиц для различий (программирование репликации)".
Результаты проверки данных
Когда проверка заканчивается, агент распространителя или агент слияния заносит в журнал сообщения касательно успеха или неудачи (репликация не сообщает, на каких строках возникла ошибка). Эти сообщения можно просматривать в средах SQL Server Management Studio, мониторе репликации и системных таблицах репликации. В перечисленных выше разделах руководства описывается, как запустить проверку и просмотреть ее результаты.
Чтобы обработать ошибки проверки, рассмотрите следующее.
Настройте предупреждение репликации под названием Репликация: ошибка проверки данных подписчиком , чтобы получать уведомление об ошибке. Дополнительные сведения см. в разделе "Настройка предопределенных оповещений репликации" (SQL Server Management Studio).
Является ли неудачная проверка данных проблемой для приложения? Если неудачная проверка данных представляет собой проблему, обновите данные вручную, чтобы они были синхронизированы, или повторно инициализируйте подписку.
Данные можно обновить с помощью программы tablediff. Дополнительные сведения об использовании этой служебной программы см. в разделе "Сравнение реплицированных таблиц для различий (программирование репликации)".
Дополнительные сведения о повторной инициализации см. в разделе "Повторная инициализация подписок".
Статьи в транзакционной репликации
Использование среды SQL Server Management Studio
- Подключитесь к серверу-издателю в SQL Server Management Studio, а затем разверните узел сервера.
- Раскройте папку Репликация , а затем папку Локальные публикации .
- Щелкните правой кнопкой мыши публикацию, для которой хотите проверить подписки, затем выберите Проверить подписки.
-
В диалоговом окне "Проверка подписок" выберите, какие подписки необходимо проверить:
- Выберите Проверить все подписки SQL Server.
- Выберите Проверить следующие подписки, а затем выберите одну или несколько подписок.
- Чтобы задать тип проверки (подсчет строк или подсчет строк с контрольной суммой), щелкните Параметры проверкии укажите параметры в диалоговом окне Параметры проверки подписки .
- Нажмите ОК.
- Просмотрите результаты проверки в мониторе репликации или в диалоговом окне Просмотр состояния синхронизации . Для каждой подписки:
- Раскройте публикацию и щелкните правой кнопкой мыши подписку, затем выберите Просмотр состояния синхронизации.
- 2. Если агент не запущен, нажмите кнопку Пуск в диалоговом окне Просмотр состояния синхронизации . В диалоговом окне появятся информационные сообщения о проверке.
Если вы не видите сообщений о проверке, это значит, что агент уже зафиксировал последующее сообщение. В этом случае просмотрите результаты проверки в мониторе репликации. Дополнительные сведения см. в инструкциях по использованию монитора репликации в этом разделе.
Использование Transact-SQL
Все статьи
На узле издателя в базе данных публикации выполните sp_publication_validation (Transact-SQL). Задайте параметр
@publicationи одно из следующих значений для@rowcount_only:- 1 — проверка только количества строк (по умолчанию);
- 2 - количество строк и двоичная контрольная сумма.
Примечание.
При выполнении sp_publication_validation (Transact-SQL) для каждой статьи в публикации выполняется sp_article_validation (Transact-SQL). Чтобы успешно выполнить sp_publication_validation (Transact-SQL), необходимо иметь разрешения SELECT для всех столбцов в опубликованных базовых таблицах.
Если агент распространителя для каждой подписки еще не запущен, запустите его (необязательно). Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription.
Просмотрите результаты проверки в выходном файле агента.
Одна статья
На издателе в базе данных публикаций выполните sp_article_validation (Transact-SQL). Задайте параметр
@publication, имя статьи в параметре@articleи одно из следующих значений в параметре@rowcount_only:- 1 — проверка только количества строк (по умолчанию)
- 2 — число строк и двоичная контрольная сумма.
Примечание.
Чтобы успешно выполнить sp_article_validation (Transact-SQL), необходимо иметь разрешения SELECT для всех столбцов в опубликованной базовой таблице.
Если агент распространителя для каждой подписки еще не запущен, запустите его (необязательно). Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription.
Просмотрите результаты проверки в выходном файле агента.
Один подписчик
На издателе в базе данных публикации откройте явную транзакцию с помощью BEGIN TRANSACTION (Transact-SQL).
На узле Publisher в базе данных публикации выполните sp_marksubscriptionvalidation (Transact-SQL). Задайте публикацию в параметре
@publication, имя подписчика в параметре@subscriberи имя базы данных подписки для@destination_db.Повторите шаг 2 для каждой проверяемой подписки (необязательно).
На стороне издателя в базе данных публикации выполните sp_article_validation (Transact-SQL). Задайте параметр
@publication, имя статьи в параметре@articleи одно из следующих значений в параметре@rowcount_only:- 1 — проверка только количества строк (по умолчанию)
- 2 — число строк и двоичная контрольная сумма.
Примечание.
Чтобы успешно выполнить sp_article_validation (Transact-SQL), необходимо иметь разрешения SELECT для всех столбцов в опубликованной базовой таблице.
На издателе в базе данных публикаций зафиксируйте транзакцию с помощью COMMIT TRANSACTION (Transact-SQL).
Повторите шаги 1 – 5 для каждой проверяемой статьи (необязательно).
(Необязательно) Запустите агент распространения, если он еще не запущен. Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription.
Просмотрите результаты проверки в выходном файле агента. Дополнительные сведения см. в разделе Проверка данных у подписчика.
Все push-подписки на транзакционную публикацию
Использование монитора репликации
В мониторе репликации раскройте группу издателей на левой панели, а затем раскройте нужного издателя.
Щелкните правой кнопкой мыши публикацию, для которой хотите проверить подписки, затем выберите Проверить подписки.
В диалоговом окне Проверка подписок выберите подписки, которые надо проверить:
- Выберите Проверить все подписки SQL Server.
- Выберите Проверить следующие подписки, а затем выберите одну или несколько подписок.
Чтобы задать тип проверки (подсчет строк или подсчет строк с контрольной суммой), щелкните Параметры проверкии укажите параметры в диалоговом окне Параметры проверки подписки .
Нажмите ОК.
Перейдите на вкладку Все подписки .
Просмотрите результаты проверки. Для каждой push-подписки:
- 1. Если агент не запущен, щелкните правой кнопкой мыши подписку и выберите Запустить синхронизацию.
- Щелкните правой кнопкой мыши подписку, затем выберите Просмотреть подробности.
- 3.Просмотрите сведения на вкладке Журнал операций от распространителя к подписчику в текстовом поле Действия в выбранном сеансе .
Для одной подписки на объединённую публикацию
Использование среды SQL Server Management Studio
Подключитесь к серверу-издателю в SQL Server Management Studio, а затем разверните узел сервера.
Раскройте папку Репликация , а затем папку Локальные публикации .
Раскройте публикацию, для которой требуется проверить подписки, щелкните правой кнопкой мыши подписку и затем выберите Проверить подписку.
В диалоговом окне Проверка подписки выберите Проверить эту подписку.
Чтобы задать тип проверки (подсчет строк или подсчет строк с контрольной суммой), щелкните Параметрыи укажите параметры в диалоговом окне Параметры проверки подписки .
Нажмите ОК.
Просмотрите результаты проверки в мониторе репликации или в диалоговом окне Просмотр состояния синхронизации .
- Раскройте публикацию и щелкните правой кнопкой мыши подписку, затем выберите Просмотр состояния синхронизации.
- Если агент не запущен, нажмите кнопку Пуск в диалоговом окне Просмотр состояния синхронизации . В диалоговом окне появятся информационные сообщения о проверке.
Если вы не видите сообщений о проверке, это значит, что агент уже зафиксировал последующее сообщение. В этом случае просмотрите результаты проверки в мониторе репликации. Дополнительные сведения см. в инструкциях по использованию монитора репликации в этом разделе.
Для всех подписок на объединённую публикацию
Использование среды SQL Server Management Studio
Подключитесь к серверу-издателю в SQL Server Management Studio, а затем разверните узел сервера.
Раскройте папку Репликация , а затем папку Локальные публикации .
Щелкните правой кнопкой мыши публикацию, для которой хотите проверить подписки, затем нажмите кнопку Проверить все подписки.
В диалоговом окне Проверка всех подписок задайте тип проверки (подсчет строк или подсчет строк с контрольной суммой).
Нажмите ОК.
Просмотрите результаты проверки в мониторе репликации или в диалоговом окне Просмотр состояния синхронизации . Для каждой подписки:
- Раскройте публикацию и щелкните правой кнопкой мыши подписку, затем выберите Просмотр состояния синхронизации.
- Если агент не запущен, нажмите кнопку Пуск в диалоговом окне Просмотр состояния синхронизации . В диалоговом окне появятся информационные сообщения о проверке.
Если вы не видите сообщений о проверке, это значит, что агент уже зафиксировал последующее сообщение. В этом случае просмотрите результаты проверки в мониторе репликации. Дополнительные сведения см. в инструкциях по использованию монитора репликации в этом разделе.
Для одной подписки с принудительной отправкой на публикацию слияния
Использование монитора репликации
- В мониторе репликации раскройте группу издателей на левой панели, раскройте нужного издателя, а затем выберите публикацию.
- Перейдите на вкладку Все подписки .
- Щелкните правой кнопкой мыши подписку, для которой требуется выполнить проверку, а затем щелкните Проверить подписку.
- В диалоговом окне Проверка подписки выберите Проверить эту подписку.
- Чтобы задать тип проверки (подсчет строк или подсчет строк с контрольной суммой), щелкните Параметрыи укажите параметры в диалоговом окне Параметры проверки подписки .
- Нажмите ОК.
- Перейдите на вкладку Все подписки .
- Просмотр результатов проверки:
- 1. Если агент не запущен, щелкните правой кнопкой мыши подписку и выберите Запустить синхронизацию.
- Щелкните правой кнопкой мыши подписку, затем выберите Просмотреть подробности.
- Просмотрите сведения на вкладке Журнал синхронизации в текстовом поле Последнее сообщение выбранного сеанса .
Использование Transact-SQL
На узле издателя в базе данных публикаций выполните sp_validatemergesubscription (Transact-SQL). Задайте параметр
@publication, имя подписчика в параметре@subscriber, имя базы данных подписки в параметре@subscriber_dbи одно из следующих значений в параметре@level:- 1 — проверка только количества строк.
- 3 — проверка двоичной контрольной суммы количества строк.
Выбранная подписка будет помечена для проверки.
Запустите агент слияния для каждой подписки. Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription.
Просмотрите результаты проверки в выходном файле агента.
Повторите шаги 1 – 3 для каждой проверяемой подписки.
Примечание.
Подписку на публикацию слияния можно также проверить в конце синхронизации, указав параметр -Validate при запуске Replication агент слияния.
Для всех принудительных подписок на публикацию слияния
Использование монитора репликации
- В мониторе репликации раскройте группу издателей на левой панели, а затем раскройте нужного издателя.
- Щелкните правой кнопкой мыши публикацию, для которой хотите проверить подписки, затем нажмите кнопку Проверить все подписки.
- В диалоговом окне Проверка всех подписок задайте тип проверки (подсчет строк или подсчет строк с контрольной суммой).
- Нажмите ОК.
- Перейдите на вкладку Все подписки .
- Просмотрите результаты проверки. Для каждой push-подписки:
- 1. Если агент не запущен, щелкните правой кнопкой мыши подписку и выберите Запустить синхронизацию.
- Щелкните правой кнопкой мыши подписку, затем выберите Просмотреть подробности.
- Просмотрите сведения на вкладке Журнал синхронизации в текстовом поле Последнее сообщение выбранного сеанса .
Использование Transact-SQL
У издателя в базе данных публикации выполните sp_validatemergepublication (Transact-SQL). Задайте параметр
@publicationи одно из следующих значений для@level:- 1 — проверка только количества строк.
- 3 — проверка двоичной контрольной суммы количества строк.
При этом все подписки будут отмечены для проверки.
Запустите агент слияния для каждой подписки. Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription.
Просмотрите результаты проверки в выходном файле агента. Дополнительные сведения см. в разделе Проверка данных у подписчика.
Проверка данных с помощью параметров агента слияния
Запустите агент слияния на подписчике (подписка по запросу) или на дистрибьюторе (принудительная подписка) из командной строки одним из следующих способов.
- Задайте значение 1 (количество строк) или 3 (количество строк и двоичная контрольная сумма) в параметре -Validate .
- Задайте rowcount validation (проверка количества строк) или rowcount and checksum validation (количество строк и контрольная сумма) в параметре -ProfileName .
Дополнительные сведения см. в разделе Synchronize a Pull Subscription или Synchronize a Push Subscription.
Использование объектов управления репликацией (RMO)
Репликация позволяет использовать объекты RMO для программной проверки того, что данные на подписчике совпадают с данными на издателе. Выбор объектов зависит от типа топологии репликации. Для репликации транзакций необходима проверка всех подписок на публикацию.
Примечание.
Пример см. ниже в этом разделе: Пример (RMO).
Проверить данные для всех статей в транзакционной публикации
Создайте соединение с издателем с помощью класса ServerConnection .
Создайте экземпляр класса TransPublication. Установите для публикации свойства Name и DatabaseName . В свойстве ConnectionContext укажите созданное на шаге 1 соединение.
Чтобы получить оставшиеся свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.
Вызовите метод ValidatePublication . Передайте следующее:
Логическое значение, указывающее, следует ли остановить агент распространения после завершения проверки.
Это помечает статьи для валидации.
Если агент распространителя еще не работает, запустите его для синхронизации каждой подписки. Дополнительные сведения см. в разделе Synchronize a Push Subscription или Synchronize a Pull Subscription. Результат операции проверки записывается в журнал агента. Дополнительные сведения см. в разделе Monitoring Replication.
Проверить данные во всех подписках на публикацию слияния
Создайте соединение с издателем с помощью класса ServerConnection .
Создайте экземпляр класса MergePublication. Установите для публикации свойства Name и DatabaseName . В свойстве ConnectionContext укажите созданное на шаге 1 соединение.
Чтобы получить оставшиеся свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.
Вызовите метод ValidatePublication . Передайте нужный параметр ValidationOption.
Запустите агент слияния для каждой подписки, чтобы запустить проверку, или дождитесь следующего запланированного запуска агента. Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription. Результат проверки записывается в журнал агента, который можно просмотреть с помощью монитора репликации. Дополнительные сведения см. в разделе Monitoring Replication.
Проверить данные в одной подписке на публикацию слияния
Создайте соединение с издателем с помощью класса ServerConnection .
Создайте экземпляр класса MergePublication. Установите для публикации свойства Name и DatabaseName . В свойстве ConnectionContext укажите созданное на шаге 1 соединение.
Чтобы получить оставшиеся свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.
Вызовите метод ValidateSubscription . Передайте имя подписчика, проверяемую базу данных подписки и нужный параметр ValidationOption.
Запустите агент слияния для этой подписки, чтобы начать проверку, или дождитесь следующего запуска агента по расписанию. Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription. Результат проверки записывается в журнал агента, который можно просмотреть с помощью монитора репликации. Дополнительные сведения см. в разделе Monitoring Replication.
Пример (RMO)
В этом примере помечаются все подписки на транзакционную публикацию для проверки числа строк.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
TransPublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new TransPublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// If we can't get the properties for this publication,
// throw an application exception.
if (publication.LoadProperties())
{
// Initiate validataion for all subscriptions to this publication.
publication.ValidatePublication(ValidationOption.RowCountOnly,
ValidationMethod.ConditionalFast, false);
// If not already running, start the Distribution Agent at each
// Subscriber to synchronize and validate the subscriptions.
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(
"Subscription validation could not be initiated.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"
Dim publication As TransPublication
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for the publication.
publication = New TransPublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' If we can't get the properties for this publication,
' throw an application exception.
If publication.LoadProperties() Then
' Initiate validataion for all subscriptions to this publication.
publication.ValidatePublication(ValidationOption.RowCountOnly, _
ValidationMethod.ConditionalFast, False)
' If not already running, start the Distribution Agent at each
' Subscriber to synchronize and validate the subscriptions.
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication. " + _
"Ensure that the publication {0} exists on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException( _
"Subscription validation could not be initiated.", ex)
Finally
conn.Disconnect()
End Try
В этом примере помечается определенная подписка на публикацию слияния для проверки числа строк.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";
MergePublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new MergePublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// If we can't get the properties for this merge publication, then throw an application exception.
if (publication.LoadProperties())
{
// Initiate validation of the specified subscription.
publication.ValidateSubscription(subscriberName,
subscriptionDbName, ValidationOption.RowCountOnly);
// Start the Merge Agent to synchronize and validate the subscription.
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(String.Format(
"The subscription at {0} to the {1} publication could not " +
"be validated.", subscriberName, publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"
Dim publication As MergePublication
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for the publication.
publication = New MergePublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' If we can't get the properties for this merge publication, then throw an application exception.
If publication.LoadProperties() Then
' Initiate validation of the specified subscription.
publication.ValidateSubscription(subscriberName, _
subscriptionDbName, ValidationOption.RowCountOnly)
' Start the Merge Agent to synchronize and validate the subscription.
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication. " + _
"Ensure that the publication {0} exists on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException(String.Format( _
"The subscription at {0} to the {1} publication could not " + _
"be validated.", subscriberName, publicationName), ex)
Finally
conn.Disconnect()
End Try