Проверка реплицированных данных
Репликация транзакций, а также репликация слиянием позволяет проверять соответствие данных подписчика данным издателя. Проверку можно выполнять как для определенных подписок, так и для всех подписок в публикации. Задайте один из следующих типов проверки и агент распространителя или агент слияния проверят данные при следующем запуске.
- Только подсчет строк. При проверке этого типа проверяется совпадение числа строк таблицы на подписчике с числом строк таблицы на издателе, но не проверяется содержимое строк на совпадение. Проверка количества строк обеспечивает упрощенный подход к проверке, который может уведомить о проблемах с данными.
- Подсчет количества строк и двоичной контрольной суммы. Кроме вычисления количества строк на подписчике и на издателе вычисляется контрольная сумма с помощью алгоритма, представленного в Microsoft SQL Server 2000. Если количество строк не совпадает, контрольная сумма не проверяется.
- Подсчет количества строк и контрольной суммы. Этот параметр устарел и не должен использоваться. Он должен применяться только для подписчиков, использующих MicrosoftSQL Server версии 7.0. В этом варианте проверки применяется тот же подход, что и при подсчете количества строк с двоичной контрольной суммой, однако используется алгоритм подсчета контрольной суммы из SQL Server версии 7.0. Дополнительные сведения см. в подразделе «Как работает проверка данных» этого раздела.
Кроме проверки совпадения данных на подписчике и издателе, репликация слиянием предоставляет возможность удостовериться, корректно ли данные секционированы для каждого подписчика. Дополнительные сведения см. в разделе Проверка сведений о секции для подписчика на публикацию слиянием.
Проверка данных
Чтобы проверить все статьи в подписке, используйте SQL Server Management Studio, хранимые процедуры или объекты RMO. Чтобы проверить отдельные статьи в публикациях моментальных снимков и публикациях транзакций, следует использовать хранимые процедуры.
- Microsoft SQL Server Management Studio: Как проверить данные на подписчике (среда SQL Server Management Studio)
- Программирование репликации на языке Transact-SQL: How to: Validate Data at the Subscriber (Replication Transact-SQL Programming)
- Программирование объектов RMO: How to: Validate Data at the Subscriber (RMO Programming)
Результаты проверки данных
Когда проверка заканчивается, агент распространителя или агент слияния заносит в журнал сообщения касательно успеха или неудачи (репликация не сообщает, на каких строках возникла ошибка). Эти сообщения можно просмотреть в SQL Server Management Studio, мониторе репликации и в системных таблицах репликации. В перечисленных выше разделах руководства описывается, как запустить проверку и просмотреть результаты.
Чтобы обработать ошибки проверки, рассмотрите следующее.
- Настройте предупреждение репликации под названием Репликация: ошибка проверки данных подписчиком, чтобы получать уведомление об ошибке. Дополнительные сведения см. в разделе Как настроить предопределенные предупреждения репликации (среда SQL Server Management Studio).
- Является ли неудачная проверка данных проблемой для приложения? Если неудачная проверка данных представляет собой проблему, обновите данные вручную, чтобы они были синхронизированы, или повторно инициализируйте подписку.
- Данные можно обновить с помощью Программа tablediff. Дополнительные сведения об использовании этой программы см. в разделе How to: Compare Replicated Tables for Differences (Replication Programming).
- Дополнительные сведения о повторной инициализации см. в разделе Повторная инициализация подписки.
Аспекты проверки данных
При проверке данных учитывайте следующие соображения.
- Перед проверкой данных следует остановить все действия по обновлению на подписчиках (при выполнении проверки нет необходимости останавливать действия на издателе).
- Ввиду того, что простые и двоичные контрольные суммы могут требовать больших вычислительных мощностей при проверке большого количества данных, следует назначать проверку на время, когда активность используемых в репликации серверов минимальна.
- Репликация проверяет только таблицы; она не проверяет, совпадают ли в схеме на издателе и подписчике только статьи (например, хранимые процедуры).
- Двоичная контрольная сумма может использоваться с любой опубликованной таблицей. С помощью контрольной суммы нельзя проверить таблицы с фильтрацией по столбцам, или логические структуры таблиц, отличающиеся смещением столбцов (из-за инструкций ALTER TABLE, удаляющих или добавляющих столбцы).
- Данные в столбцах text, ntext или image не учитываются при вычислении контрольной суммы.
- Проверка с использованием двоичной контрольной суммы может неверно сообщить об отказе, если типы данных на подписчике и издателе разнятся. Это может случиться, если инициализировать подписку вручную с применением отличающихся типов данных на подписчике, или если использовать следующие параметры схемы для статьи.
- Сопоставление определяемых пользователем типов данных с базовыми типами данных (параметр схемы 0х20).
- Сопоставление xml c ntext (параметр схемы 0x10000000).
- Сопоставление типов данных nvarchar(max) и varbinary(max) с типами данных, поддерживаемыми в предыдущих версиях SQL Server (параметр схемы 0x20000000).
Дополнительные сведения о параметрах схемы см. в разделе Публикация данных и объектов базы данных.
- Проверки двоичной контрольной суммы и простой контрольной суммы не поддерживаются трансформируемыми подписками для репликации транзакций.
- Также не поддерживается проверка данных, реплицированных на подписчики, отличные от SQL Server.
Как работает проверка данных
SQL Server проверяет данные путем подсчета числа строк или контрольной суммы на издателе и последующего сравнения этих значений с соответствующими значениями числа строк и контрольной суммы, вычисленными на подписчике. Одно значение вычисляется для всей таблицы публикации, и одно — для всей таблицы подписки, но данные в столбцах типа text, ntext и image не участвуют в вычислении.
При выполнении вычислений временно устанавливаются совместные блокировки таблиц, для которых производится подсчет числа строк или контрольных сумм, однако вычисления вскоре завершаются и общие блокировки снимаются, обычно в течение нескольких секунд.
При использовании двоичных контрольных сумм выполняется последовательная проверка столбцов избыточным 32-разрядным кодом (CRC) вместо проверки циклическим избыточным кодом (CRC) физической строки на странице данных. Это позволяет столбцам таблицы располагаться физически в любом порядке на странице данных, и при этом CRC-код для строки будет оставаться прежним. Проверка по двоичной контрольной сумме может использоваться при наличии у публикации фильтров по строкам или столбцам. Подписчики, на которых выполняется SQL Server версии 7.0, должны использовать алгоритмы подсчета контрольной суммы, реализованные в SQL Server версии 7.0 и формирующие значения CRC-кода, отличные от значений кода, формируемых в SQL Server 2000 и более поздних версиях. С помощью реализованных в SQL Server версии 7.0 алгоритмов контрольной суммы нельзя проверить таблицы с фильтрацией по столбцам или с логической структурой таблиц, отличающихся смещением столбцов (из-за инструкций ALTER TABLE, которые удаляют или добавляют столбцы).
См. также
Основные понятия
Рекомендации по администрированию репликации