Проверка реплицированных данных

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

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

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

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

Проверка данных

Чтобы проверить все статьи в подписке, используйте Среда SQL Server Management Studio, хранимые процедуры или объекты RMO. Чтобы проверить отдельные статьи в публикациях моментальных снимков и публикациях транзакций, следует использовать хранимые процедуры.

Результаты проверки данных

Когда проверка заканчивается, агент распространителя или агент слияния заносит в журнал сообщения касательно успеха или неудачи (репликация не сообщает, на каких строках возникла ошибка). Эти сообщения можно просмотреть в Среда SQL Server Management Studio, мониторе репликации и в системных таблицах репликации. В перечисленных выше разделах руководства описывается, как запустить проверку и просмотреть ее результаты.

Чтобы обработать ошибки проверки, рассмотрите следующее.

Аспекты проверки данных

При проверке данных учитывайте следующие соображения.

  • Перед проверкой данных следует остановить все действия по обновлению на подписчиках (при выполнении проверки нет необходимости останавливать действия на издателе).

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

  • Репликация проверяет только таблицы; она не проверяет, совпадают ли в схеме на издателе и подписчике только статьи (например, хранимые процедуры).

  • Двоичная контрольная сумма может использоваться с любой опубликованной таблицей. С помощью контрольной суммы нельзя проверить таблицы с фильтрацией по столбцам, или логические структуры таблиц, отличающиеся смещением столбцов (из-за инструкций ALTER TABLE, удаляющих или добавляющих столбцы).

  • Проверка репликации использует функции checksum и binary_checksum. Дополнительные сведения об их поведении см. в разделах CHECKSUM (Transact-SQL) и BINARY_CHECKSUM (Transact-SQL).

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

    • Явная установка параметров схемы для соответствия типам данных в ранних версиях SQL Server. Дополнительные сведения о сопоставлении типов данных см. в разделе Использование нескольких версий SQL Server в топологии репликации.

    • Установка уровня совместимости публикации для публикации слиянием в соответствии с более ранней версией SQL Server, в то время как опубликованные таблицы содержат один или несколько типов данных, которые должны соответствовать текущей версии. Дополнительные сведения о сопоставлении типов данных и уровне совместимости публикации см. в разделе Использование нескольких версий SQL Server в топологии репликации.

    • Инициализация подписки вручную при использовании разных типов данных на подписчике.

  • Проверки двоичной контрольной суммы и простой контрольной суммы не поддерживаются трансформируемыми подписками для репликации транзакций.

  • Также не поддерживается проверка данных, реплицированных на подписчики, отличные от SQL Server.

Как работает проверка данных

SQL Server проверяет данные путем подсчета числа строк или контрольной суммы на издателе и последующего сравнения этих значений с соответствующими значениями числа строк и контрольной суммы, вычисленными на подписчике. Одно значение вычисляется для всей таблицы публикации, одно — для всей таблицы подписки, но данные в столбцах типа text, ntext и image в вычислении не участвуют.

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

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