Проверка реплицированных данных
В этом разделе описывается проверка данных на подписчике в SQL Server 2014 с помощью SQL Server Management Studio, Transact-SQL или объектов RMO.
Репликация транзакций, а также репликация слиянием позволяет проверять соответствие данных подписчика данным издателя. Проверку можно выполнять как для определенных подписок, так и для всех подписок в публикации. Задайте один из следующих типов проверки и агент распространителя или агент слияния проверят данные при следующем запуске.
- Только число строк. При проверке этого типа проверяется совпадение числа строк таблицы на подписчике с числом строк таблицы на издателе, но не проверяется содержимое строк на совпадение. Проверка количества строк обеспечивает упрощенный подход к проверке, который может уведомить о проблемах с данными.
- Подсчет количества строк и двоичной контрольной суммы. Кроме подсчета количества строк на подписчике и на издателе, вычисляется контрольная сумма всех данных с помощью алгоритма подсчета контрольной суммы. Если количество строк не совпадает, то контрольная сумма не проверяется.
Кроме проверки совпадения данных на подписчике и издателе, репликация слиянием предоставляет возможность удостовериться, правильно ли данные секционированы для каждого подписчика. Дополнительные сведения см. в статье Проверка сведений о секции для подписчика на публикацию слиянием.
Как работает проверка данных
SQL Server проверяет данные путем подсчета числа строк или контрольной суммы на издателе и последующего сравнения этих значений с соответствующими значениями числа строк и контрольной суммы, вычисленными на подписчике. Одно значение вычисляется для всей таблицы публикации, одно — для всей таблицы подписки, но данные в столбцах типа text
, ntext
и image
в вычислении не участвуют.
При выполнении вычислений временно устанавливаются совместные блокировки таблиц, для которых производится подсчет числа строк или контрольных сумм, однако вычисления вскоре завершаются и общие блокировки снимаются, обычно в течение нескольких секунд.
При использовании двоичных контрольных сумм выполняется последовательная проверка столбцов избыточным 32-разрядным кодом (CRC) вместо проверки циклическим избыточным кодом (CRC) физической строки на странице данных. Это позволяет столбцам таблицы располагаться физически в любом порядке на странице данных, и при этом CRC-код для строки будет оставаться прежним. Проверка по двоичной контрольной сумме может использоваться при наличии у публикации фильтров по строкам или столбцам.
Проверка данных состоит из трех этапов:
Одна или все подписки на публикацию помечаются для проверки. Пометьте подписки для проверки в диалоговых окнах Проверить подписку, Проверить подпискии Проверить все подписки , доступные из папок Локальные публикации и Локальные подписки в среде MicrosoftSQL Server Management Studio. Все подписки можно также пометить на вкладке Все подписки , вкладке Список наблюдения за подписками и в узле публикаций монитора репликации. Сведения о запуске монитора репликации см. в этой статье.
Подписка проверяется при следующей синхронизации, выполняемой агентом распространителя (для репликации транзакций) или агентом слияния (для репликации слиянием). Агент распространителя, как правило, работает постоянно, то есть проверка выполняется немедленно. Агент слияния запускается по запросу, в этом случае проверка выполняется после запуска агента.
Просмотрите результаты проверки.
- В окнах сведений монитора репликации: на вкладке Журнал операций от распространителя к подписчику для репликации транзакций и на вкладке Журнал синхронизации для репликации слиянием.
- В диалоговом окне Просмотр состояния синхронизации в Среда Management Studio.
Рекомендации и ограничения
- Процедуры монитора репликации используются только для принудительных подписок, так как в мониторе репликации нельзя синхронизировать подписки по запросу. Однако в мониторе репликации можно пометить подписку для проверки и просмотреть результаты проверки для подписок по запросу.
- Результаты показывают, как завершилась проверка — успешно или неудачно, но в случае ошибки строки, не прошедшие проверку, не указываются. Для сравнения данных издателя и подписчика используется tablediff Utility. Дополнительные сведения об использовании этой служебной программы с реплицированными данными см. в разделе Сравнение реплицированных таблиц для различий (программирование репликации).
При проверке данных учитывайте следующие соображения.
Перед проверкой данных следует остановить все действия по обновлению на подписчиках (при выполнении проверки нет необходимости останавливать действия на издателе).
Ввиду того что простые и двоичные контрольные суммы могут требовать больших вычислительных мощностей при проверке большого количества данных, следует назначать проверку на время, когда активность используемых в репликации серверов минимальна.
Репликация проверяет только таблицы; она не проверяет, совпадают ли в схеме на издателе и подписчике только статьи (например, хранимые процедуры).
Двоичная контрольная сумма может использоваться с любой опубликованной таблицей. С помощью контрольной суммы нельзя проверить таблицы с фильтрацией по столбцам, или логические структуры таблиц, отличающиеся смещением столбцов (из-за инструкций ALTER TABLE, удаляющих или добавляющих столбцы).
При проверке репликации используются
checksum
функции binary_checksum и . Сведения об их поведении см. в разделах CHECKSUM (Transact-SQL) и BINARY_CHECKSUM (Transact-SQL).Проверка с использованием двоичной контрольной суммы может неверно сообщить об отказе, если типы данных на подписчике и издателе отличаются. К этому может привести выполнение одного из следующих действий.
- Явная установка параметров схемы для соответствия типам данных в ранних версиях SQL Server.
- Установка уровня совместимости публикации для публикации слиянием в соответствии с более ранней версией SQL Server, в то время как опубликованные таблицы содержат один или несколько типов данных, которые должны соответствовать текущей версии.
- Инициализация подписки вручную при использовании разных типов данных на подписчике.
Проверки двоичной контрольной суммы и простой контрольной суммы не поддерживаются трансформируемыми подписками для репликации транзакций.
Также не поддерживается проверка данных, реплицированных на подписчики, отличные отSQL Server .
Результаты проверки данных
Когда проверка заканчивается, агент распространителя или агент слияния заносит в журнал сообщения касательно успеха или неудачи (репликация не сообщает, на каких строках возникла ошибка). Эти сообщения можно просмотреть в среде SQL Server Management Studio, мониторе репликации и в системных таблицах репликации. В перечисленных выше разделах руководства описывается, как запустить проверку и просмотреть ее результаты.
Чтобы обработать ошибки проверки, рассмотрите следующее.
Настройте предупреждение репликации под названием Репликация: ошибка проверки данных подписчиком , чтобы получать уведомление об ошибке. Дополнительные сведения см. в разделе [Настройка предопределенных оповещений репликации (SQL Server Management Studio)(administration/configure-predefined-replication-alerts-sql-server-management-studio.md).
Является ли неудачная проверка данных проблемой для приложения? Если неудачная проверка данных представляет собой проблему, обновите данные вручную, чтобы они были синхронизированы, или повторно инициализируйте подписку.
Данные можно обновить с помощью программы tablediff. Дополнительные сведения об использовании этой служебной программы см. в статье Сравнение реплицированных таблиц для различий (программирование репликации).
Дополнительные сведения о повторной инициализации см. в статье Повторная инициализация подписок.
Статьи при репликации транзакций
Использование среды SQL Server Management Studio
Подключитесь к издателю в среде SQL Server Management Studio, а затем раскройте узел сервера.
Раскройте папку Репликация , а затем папку Локальные публикации .
Щелкните правой кнопкой мыши публикацию, для которой хотите проверить подписки, затем выберите Проверить подписки.
В диалоговом окне Проверка подписок выберите подписки, которые надо проверить:
- Выберите Проверить все подписки SQL Server.
- Выберите Проверить следующие подпискии укажите одну или несколько подписок.
Чтобы задать тип проверки (подсчет строк или подсчет строк с контрольной суммой), щелкните Параметры проверкии укажите параметры в диалоговом окне Параметры проверки подписки .
Нажмите кнопку ОК.
Просмотрите результаты проверки в мониторе репликации или в диалоговом окне Просмотр состояния синхронизации . Для каждой подписки:
- Раскройте публикацию и щелкните правой кнопкой мыши подписку, затем выберите Просмотр состояния синхронизации.
- 2. Если агент не запущен, нажмите кнопку Пуск в диалоговом окне Просмотр состояния синхронизации . В диалоговом окне появятся информационные сообщения о проверке.
Если нет никаких сообщений, касающихся проверки, значит, агент уже зарегистрировал сообщение ранее. В этом случае просмотрите результаты проверки в мониторе репликации. Дополнительные сведения см. в описании процедур монитора репликации данного раздела.
Использование Transact-SQL (T-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).
На издателе в базе данных публикации выполните 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.
Просмотрите результаты проверки в выходном файле агента. Дополнительные сведения см. в разделе Validate Data at the Subscriber.
Все принудительные подписки на публикацию транзакций
Использование монитора репликации
- В мониторе репликации раскройте группу издателей на левой панели, а затем раскройте нужного издателя.
- Щелкните правой кнопкой мыши публикацию, для которой хотите проверить подписки, затем выберите Проверить подписки.
- В диалоговом окне Проверка подписок выберите подписки, которые надо проверить:
- Выберите Проверить все подписки SQL Server.
- Выберите Проверить следующие подпискии укажите одну или несколько подписок.
- Чтобы задать тип проверки (подсчет строк или подсчет строк с контрольной суммой), щелкните Параметры проверкии укажите параметры в диалоговом окне Параметры проверки подписки .
- Нажмите кнопку ОК.
- Перейдите на вкладку Все подписки .
- Просмотрите результаты проверки. Для каждой принудительной подписки:
- 1. Если агент не запущен, щелкните правой кнопкой мыши подписку и выберите Запустить синхронизацию.
- Щелкните правой кнопкой мыши подписку, затем выберите Просмотреть подробности.
- 3.Просмотрите сведения на вкладке Журнал операций от распространителя к подписчику в текстовом поле Действия в выбранном сеансе .
Для одной подписки на публикацию слиянием
Использование среды SQL Server Management Studio
Подключитесь к издателю в среде SQL Server Management Studio, а затем раскройте узел сервера.
Раскройте папку Репликация , а затем папку Локальные публикации .
Раскройте публикацию, для которой требуется проверить подписки, щелкните правой кнопкой мыши подписку и затем выберите Проверить подписку.
В диалоговом окне Проверка подписки выберите Проверить эту подписку.
Чтобы задать тип проверки (подсчет строк или подсчет строк с контрольной суммой), щелкните Параметрыи укажите параметры в диалоговом окне Параметры проверки подписки .
Нажмите кнопку ОК.
Просмотрите результаты проверки в мониторе репликации или в диалоговом окне Просмотр состояния синхронизации .
- Раскройте публикацию и щелкните правой кнопкой мыши подписку, затем выберите Просмотр состояния синхронизации.
- Если агент не запущен, нажмите кнопку Пуск в диалоговом окне Просмотр состояния синхронизации . В диалоговом окне появятся информационные сообщения о проверке.
Если нет никаких сообщений, касающихся проверки, значит, агент уже зарегистрировал сообщение ранее. В этом случае просмотрите результаты проверки в мониторе репликации. Дополнительные сведения см. в описании процедур монитора репликации данного раздела.
Использование Transact-SQL (T-SQL)
На издателе в базе данных публикации выполните sp_validatemergesubscription (Transact-SQL). Задайте параметр @publication, имя подписчика в параметре @subscriber, имя базы данных подписки в параметре @subscriber_dbи одно из следующих значений в параметре @level:
- 1 — проверка только количества строк.
- 3 — проверка двоичной контрольной суммы.
Выбранная подписка будет помечена для проверки.
Запустите агент слияния для каждой подписки. Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription.
Просмотрите результаты проверки в выходном файле агента.
Повторите шаги 1 – 3 для каждой проверяемой подписки.
Примечание
Подписка на публикацию слиянием может быть проверена и в конце синхронизации с помощью параметра -Validate , когда работает Replication Merge Agent.
Для всех подписок на публикацию слиянием
Использование среды SQL Server Management Studio
Подключитесь к издателю в среде SQL Server Management Studio, а затем раскройте узел сервера.
Раскройте папку Репликация , а затем папку Локальные публикации .
Щелкните правой кнопкой мыши публикацию, для которой хотите проверить подписки, затем нажмите кнопку Проверить все подписки.
В диалоговом окне Проверка всех подписок задайте тип проверки (подсчет строк или подсчет строк с контрольной суммой).
Нажмите кнопку ОК.
Просмотрите результаты проверки в мониторе репликации или в диалоговом окне Просмотр состояния синхронизации . Для каждой подписки:
- Раскройте публикацию и щелкните правой кнопкой мыши подписку, затем выберите Просмотр состояния синхронизации.
- Если агент не запущен, нажмите кнопку Пуск в диалоговом окне Просмотр состояния синхронизации . В диалоговом окне появятся информационные сообщения о проверке.
Если нет никаких сообщений, касающихся проверки, значит, агент уже зарегистрировал сообщение ранее. В этом случае просмотрите результаты проверки в мониторе репликации. Дополнительные сведения см. в описании процедур монитора репликации данного раздела.
Использование Transact-SQL (T-SQL)
На издателе в базе данных публикации выполните sp_validatemergepublication (Transact-SQL). Задайте параметр @publication и одно из следующих значений в параметре @level:
- 1 — проверка только количества строк.
- 3 — проверка двоичной контрольной суммы.
Таким образом будут отмечены для проверки все публикации.
Запустите агент слияния для каждой подписки. Дополнительные сведения см. в разделах Synchronize a Pull Subscription и Synchronize a Push Subscription.
Просмотрите результаты проверки в выходном файле агента. Дополнительные сведения см. в разделе Validate Data at the Subscriber.
Для одной принудительной подписки на публикацию слиянием
Использование монитора репликации
- В мониторе репликации раскройте группу издателей на левой панели, раскройте нужного издателя, а затем выберите публикацию.
- Перейдите на вкладку Все подписки .
- Щелкните правой кнопкой мыши подписку, для которой требуется выполнить проверку, а затем щелкните Проверить подписку.
- В диалоговом окне Проверка подписки выберите Проверить эту подписку.
- Чтобы задать тип проверки (подсчет строк или подсчет строк с контрольной суммой), щелкните Параметрыи укажите параметры в диалоговом окне Параметры проверки подписки .
- Нажмите кнопку ОК.
- Перейдите на вкладку Все подписки .
- Просмотрите результаты проверки:
- 1. Если агент не запущен, щелкните правой кнопкой мыши подписку и выберите Запустить синхронизацию.
- Щелкните правой кнопкой мыши подписку, затем выберите Просмотреть подробности.
- Просмотрите сведения на вкладке Журнал синхронизации в текстовом поле Последнее сообщение выбранного сеанса .
Для всех принудительных подписок на публикацию слиянием
Использование монитора репликации
- В мониторе репликации раскройте группу издателей на левой панели, а затем раскройте нужного издателя.
- Щелкните правой кнопкой мыши публикацию, для которой хотите проверить подписки, затем нажмите кнопку Проверить все подписки.
- В диалоговом окне Проверка всех подписок задайте тип проверки (подсчет строк или подсчет строк с контрольной суммой).
- Нажмите кнопку ОК.
- Перейдите на вкладку Все подписки .
- Просмотрите результаты проверки. Для каждой принудительной подписки:
- 1. Если агент не запущен, щелкните правой кнопкой мыши подписку и выберите Запустить синхронизацию.
- Щелкните правой кнопкой мыши подписку, затем выберите Просмотреть подробности.
- Просмотрите сведения на вкладке Журнал синхронизации в текстовом поле Последнее сообщение выбранного сеанса .
Проверка данных с помощью параметров агент слияния
Запустите агент слияния на подписчике (подписка по запросу) или на распространителе (принудительная подписка) из командной строки одним из следующих способов.
- Задайте значение 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 . Передайте следующие параметры:
- ValidationOption
- ValidationMethod
- Логическое значение, указывающее, нужно ли прекращать выполнение агента распространителя после окончания проверки.
Будут отмечены статьи для проверки.
Если агент распространителя еще не работает, запустите его для синхронизации каждой подписки. Дополнительные сведения см. в разделе 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 = "AdventureWorks2012";
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 = "AdventureWorks2012"
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 = "AdventureWorks2012";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
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 = "AdventureWorks2012"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
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