Проверка реплицированных данных
Репликация транзакций, а также репликация слиянием позволяет проверять соответствие данных подписчика данным издателя. Проверку можно выполнять как для определенных подписок, так и для всех подписок в публикации. Задайте один из следующих типов проверки и агент распространителя или агент слияния проверят данные при следующем запуске.
Только подсчет строк. При проверке этого типа проверяется совпадение числа строк таблицы на подписчике с числом строк таблицы на издателе, но не проверяется содержимое строк на совпадение. Проверка количества строк обеспечивает упрощенный подход к проверке, который может уведомить о проблемах с данными.
Подсчет количества строк и двоичной контрольной суммы. Кроме подсчета количества строк на подписчике и на издателе, вычисляется контрольная сумма всех данных с помощью алгоритма подсчета контрольной суммы. Если количество строк не совпадает, то контрольная сумма не проверяется.
Кроме проверки совпадения данных на подписчике и издателе, репликация слиянием предоставляет возможность удостовериться, правильно ли данные секционированы для каждого подписчика. Дополнительные сведения см. в разделе Проверка сведений о секции для подписчика на публикацию слиянием.
Проверка данных
Чтобы проверить все статьи в подписке, используйте Среда SQL Server Management Studio, хранимые процедуры или объекты RMO. Чтобы проверить отдельные статьи в публикациях моментальных снимков и публикациях транзакций, следует использовать хранимые процедуры.
Microsoft Среда SQL Server Management Studio: Как проверить данные на подписчике (среда SQL Server Management Studio)
Программирование репликации на языке Transact-SQL: Как проверить данные на подписчике (программирование репликации на языке Transact-SQL)
Программирование объектов RMO: Как проверить данные на подписчике (программирование объектов RMO)
Результаты проверки данных
Когда проверка заканчивается, агент распространителя или агент слияния заносит в журнал сообщения касательно успеха или неудачи (репликация не сообщает, на каких строках возникла ошибка). Эти сообщения можно просмотреть в Среда SQL Server Management Studio, мониторе репликации и в системных таблицах репликации. В перечисленных выше разделах руководства описывается, как запустить проверку и просмотреть ее результаты.
Чтобы обработать ошибки проверки, рассмотрите следующее.
Настройте предупреждение репликации под названием Репликация: ошибка проверки данных подписчиком, чтобы получать уведомление об ошибке. Дополнительные сведения см. в разделе Как настроить предопределенные предупреждения репликации (среда SQL Server Management Studio).
Является ли неудачная проверка данных проблемой для приложения? Если неудачная проверка данных представляет собой проблему, обновите данные вручную, чтобы они были синхронизированы, или повторно инициализируйте подписку.
Данные можно обновить с помощью программы tablediff. Дополнительные сведения об использовании этой программы см. в разделе Как сравнить реплицируемые таблицы на предмет различий (программирование репликации).
Дополнительные сведения о повторной инициализации см. в разделе Повторная инициализация подписки.
Аспекты проверки данных
При проверке данных учитывайте следующие соображения.
Перед проверкой данных следует остановить все действия по обновлению на подписчиках (при выполнении проверки нет необходимости останавливать действия на издателе).
Ввиду того что простые и двоичные контрольные суммы могут требовать больших вычислительных мощностей при проверке большого количества данных, следует назначать проверку на время, когда активность используемых в репликации серверов минимальна.
Репликация проверяет только таблицы; она не проверяет, совпадают ли в схеме на издателе и подписчике только статьи (например, хранимые процедуры).
Двоичная контрольная сумма может использоваться с любой опубликованной таблицей. С помощью контрольной суммы нельзя проверить таблицы с фильтрацией по столбцам, или логические структуры таблиц, отличающиеся смещением столбцов (из-за инструкций 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-код для строки будет оставаться прежним. Проверка по двоичной контрольной сумме может использоваться при наличии у публикации фильтров по строкам или столбцам.
См. также