Поделиться через


Обнаружение и разрешение конфликтов репликации

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

Обнаружение конфликтов

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

При синхронизации с издателями SQL Server 2005, SQL Server 2008 и SQL Server 2008 R2Microsoft SQL Server Compact 3.5  поддерживает отслеживание как на уровне строк, так и на уровне столбцов.

Примечание

В SQL Server Compact 3.5 синхронизация с SQL Server 2000 не поддерживается.

Использование механизмов разрешения конфликтов

Если обнаруживается конфликт, агент слияния запускает механизм разрешения конфликтов, выбранный для соответствующей статьи. Это может быть механизм разрешения конфликтов, используемый по умолчанию, или любой другой поддерживаемый механизм разрешения конфликтов, включая пользовательский механизм. Допустимые изменения выбираются в соответствии с правилами соответствующего механизма разрешения конфликтов. Конфликты подписчика SQL Server Compact 3.5 всегда обнаруживаются и разрешаются на издателе. Сведения о конфликте сохраняются в журнале.

Важно!

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

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

Примечание

Клиенты SQL Server Compact 3.5 всегда имеют приоритет, равный 0. Поэтому механизм разрешения конфликтов, основанный на приоритетах, никогда не будет отдавать предпочтение изменениям, внесенным на устройстве.

Дополнительные сведения об обнаружении и разрешении конфликтов см. в разделе «Обнаружение и разрешение конфликтов репликации слиянием» электронной документации SQL Server.

Примечание

Арбитры конфликтов слияния на основе хранимых процедур не поддерживаются подписками SQL Server Compact 3.5.

Применение пользовательских механизмов разрешения конфликтов

Пользовательские механизмы разрешения конфликтов позволяют применять для этого дополнительные средства бизнес-логики. Подобные механизмы представляют собой файлы DLL, созданные с использованием управляемого или собственного кода. Чтобы применять пользовательский механизм разрешения конфликтов, его необходимо зарегистрировать на издателе и на компьютере с сервером IIS при помощи хранимой процедуры sp_registercustomeresolver. Хранимая процедура sp_registercustomeresolver включает параметр is_dotnet_assembly, которому необходимо присвоить значение true, если используется механизм разрешения конфликтов на основе управляемого кода, и значение false, если используется собственная библиотека DLL.

Важно!

Пользовательский арбитр должен быть зарегистрирован как на компьютере с SQL Server, так и на компьютере с сервером IIS.

См. также

Другие ресурсы

Использование отслеживания на уровне строк и на уровне столбцов