Обнаружение и разрешение конфликтов репликации
В процессе выполнения очередной синхронизации изменения, внесенные на одном подписчике, могут конфликтовать с изменениями, внесенными на другом подписчике или на издателе. При создании публикации определяется механизм обнаружения и разрешения подобных конфликтов.
Обнаружение конфликтов
В процессе синхронизации запущенный на издателе агент слияния обнаруживает конфликты данных и, в зависимости от сопоставленного публикации механизма разрешения конфликтов, определяет, какие данные следует принять и передать другим узлам.
Microsoft При синхронизации с издателями SQL Server 2005 SQL Server 2005 Compact Edition (SQL Server Compact Edition) поддерживает отслеживание как на уровне строк, так и на уровне столбцов. При синхронизации с издателями SQL Server 2000 SQL Server Compact Edition поддерживает отслеживание только на уровне строк.
Отслеживание на уровне строк в SQL Server Compact Edition
При синхронизации с издателем SQL Server 2000 ядро управления СУБД SQL Server Compact Edition выполняет отслеживание при каждом удалении, изменении или добавлении строки. При обнаружении конфликтов на уровне строк изменения, внесенные в соответствующие строки, считаются конфликтующими, независимо от того, были внесены эти изменения в один столбец или в разные. Допустим, что на издателе был изменен столбец address какой-либо строки, а на подписчике — столбец phone соответствующей строки. Если используется отслеживание на уровне строк, эта ситуация вызовет конфликт, поскольку оба изменения были сделаны для одной строки.
Примечание. |
---|
Даже если на издателе SQL Server 2000 используется отслеживание на уровне столбцов, SQL Server Compact Edition помечает строку так, как если бы в ней были изменены все столбцы. Отслеживание на уровне столбцов поддерживается только издателями SQL Server 2005. |
Использование механизмов разрешения конфликтов
Если обнаруживается конфликт, агент слияния запускает механизм разрешения конфликтов, выбранный для соответствующей статьи. Это может быть механизм разрешения конфликтов, используемый по умолчанию, или любой другой поддерживаемый механизм разрешения конфликтов, включая пользовательский механизм. Допустимые изменения выбираются в соответствии с правилами соответствующего механизма разрешения конфликтов. Конфликты подписчика SQL Server Compact Edition всегда обнаруживаются и разрешаются на издателе. Сведения о конфликте сохраняются в журнале.
Важно! |
---|
Многопользовательский доступ не позволяет изменять данные во время синхронизации, поскольку это может привести к конфликтам на стороне клиента. Конфликты на стороне клиента обнаруживаются на подписчике, однако подписчик не выполняет разрешение этих конфликтов. Возникший конфликт будет обнаружен и разрешен издателем во время следующей синхронизации. Дополнительные сведения см. в разделе Многопользовательский доступ и синхронизация. |
Механизмы разрешения конфликтов могут выполнять разрешение конфликтов на основе источника изменений или приоритета подписчика. К примеру, используемый по умолчанию механизм разрешения конфликтов исходит из того, что изменения, внесенные на издателе, всегда имеют приоритет перед изменениями, внесенными на подписчике. Вместо него можно использовать механизм разрешения конфликтов, для которого изменения, внесенные на подписчике, всегда будут иметь более высокий приоритет, чем изменения, внесенные на издателе.
Примечание. |
---|
Клиенты SQL Server Compact Edition всегда имеют приоритет, равный 0. Поэтому механизм разрешения конфликтов, основанный на приоритетах, никогда не будет отдавать предпочтение изменениям, внесенным на устройстве. |
Дополнительные сведения об обнаружении и разрешении конфликтов см. в разделе "Обнаружение и разрешение конфликтов репликации слиянием" электронной документации SQL Server.
Примечание. |
---|
Подписки SQL Server Compact Edition не поддерживают механизмы разрешения конфликтов при репликации слиянием, основанные на хранимых процедурах. |
Применение пользовательских механизмов разрешения конфликтов
Пользовательские механизмы разрешения конфликтов позволяют применять для этого дополнительные средства бизнес-логики. Подобные механизмы представляют собой файлы DLL, созданные с использованием управляемого или собственного кода. Чтобы применять пользовательский механизм разрешения конфликтов, его необходимо зарегистрировать на издателе и на компьютере с сервером IIS при помощи хранимой процедуры sp_registercustomeresolver. Хранимая процедура sp_registercustomeresolver включает параметр is_dotnet_assembly , которому необходимо присвоить значение true, если используется механизм разрешения конфликтов на основе управляемого кода, и значение false, если используется собственная библиотека DLL.
Внимание. Пользовательский механизм разрешения конфликтов должен быть зарегистрирован как на компьютере с программным обеспечением SQL Server, так и на компьютере с сервером IIS.