Определение сопоставителя статей публикации слиянием
В этом разделе описывается определение арбитра статей публикации слиянием в SQL Server 2012 с помощью среды Среда SQL Server Management Studio или Transact-SQL.
В этом разделе
Перед началом работы выполните следующие действия.
Рекомендации
Для определения арбитра статей публикации слиянием используется:
Среда SQL Server Management Studio
Transact-SQL
Перед началом
Рекомендации
Репликация слиянием допускает следующие типы сопоставителей статей:
Сопоставитель по умолчанию. Поведение сопоставителя по умолчанию зависит от того, является подписка клиентской или серверной. Дополнительные сведения об указании типа подписки см. в разделе Указание типа подписки на публикацию слиянием и приоритета устранения конфликтов (среда SQL Server Management Studio).
Пользовательский сопоставитель, который может быть обработчиком бизнес-логики (написанным на управляемом коде), или пользовательским, основанным на технологии COM. Дополнительные сведения см. в разделе Расширенное обнаружение и разрешение конфликтов репликации слиянием. Если требуется применить пользовательскую логику, исполняемую для каждой реплицируемой строки, а не только для конфликтующих строк, см. раздел Реализация обработчика бизнес-логики для статьи публикации слиянием.
Стандартный арбитр, основанный на COM, который входит в состав Microsoft SQL Server.
Чтобы использовать сопоставитель, отличный от сопоставителя по умолчанию, необходимо скопировать сопоставитель на компьютер, на котором выполняется агент слияния, и зарегистрировать его (если используется обработчик бизнес-логики, он также должен быть зарегистрирован на издателе). Агент слияния выполняется на:
распространителе для принудительной подписки;
подписчике для подписки по запросу;
IIS-сервере Майкрософт для подписки по запросу, которая использует веб-синхронизацию.
[Top]
Использование среды SQL Server Management Studio
После регистрации сопоставителя укажите, что статья должна использовать данный арбитр, выполнив настройки на вкладке Сопоставитель диалогового окна Свойства статьи — <статья>, которое доступно в мастере создания публикаций и в диалоговом окне Свойства публикации — <публикация>. Дополнительные сведения об использовании этого мастера и о доступе к этому диалоговому окну см. в разделах Создание публикации и Просмотр и изменение свойств публикации.
Указание сопоставителя
На странице Статьи мастера создания публикации или в диалоговом окне Свойства публикации — <публикация> выберите таблицу.
Щелкните Свойства статьи, затем щелкните Указать свойства выделенной статьи таблицы.
На странице Свойства статьи — <статья> щелкните вкладку Арбитр конфликтов.
Выберите Использовать пользовательский сопоставитель (зарегистрированный на распространителе):, затем щелкните в списке сопоставитель.
Если сопоставитель запрашивает входные данные (такие, как имя столбца), укажите их в текстовом поле Введите данные, необходимые сопоставителю.
Нажмите кнопку ОК.
Повторите этот процесс для каждой статьи, которая запрашивает сопоставитель.
[Top]
Использование Transact-SQL
Регистрация пользовательского сопоставителя конфликтов
Если планируется зарегистрировать собственный пользовательский сопоставитель конфликтов, создайте один из следующих типов.
Сопоставитель на основе управляемого кода в качестве обработчика бизнес-логики. Дополнительные сведения см. в разделе Реализация обработчика бизнес-логики для статьи публикации слиянием.
Арбитр на основе хранимых процедур и арбитр на основе COM. Дополнительные сведения см. в разделе Реализация пользовательского арбитра конфликтов для статьи публикации слиянием.
Чтобы определить, зарегистрирован ли нужный сопоставитель, выполните хранимую процедуру sp_enumcustomresolvers (Transact-SQL) на издателе для любой базы данных. Будет выведено описание пользовательского сопоставителя, а также идентификатор класса (CLSID) для каждого сопоставителя на основе COM, зарегистрированного на распространителе, или сведения об управляемой сборке для каждого обработчика бизнес-логики, зарегистрированного на распространителе.
Если нужный пользовательский сопоставитель еще не зарегистрирован, выполните хранимую процедуру sp_registercustomresolver (Transact-SQL) на распространителе. Укажите имя для сопоставителя в параметре @article_resolver; для обработчика бизнес-логики это будет понятное имя сборки. Для сопоставителей на основе COM укажите идентификатор CLSID DLL-библиотеки в параметре @resolver_clsid, а для обработчика бизнес-логики — значение true в параметре @is_dotnet_assembly, имя сборки — в параметре @dotnet_assembly_name и полное имя класса, переопределяющего свойство BusinessLogicModule, в параметре @dotnet_class_name.
Примечание Если сборка обработчика бизнес-логики развернута не в том же каталоге, что и исполняемый объект агента слияния, то в каталоге приложения, синхронно запускающего агент слияния, или в глобальном кэше сборок (GAC) необходимо указать полный путь, включая имя сборки, в параметра @dotnet_assembly_name.
Если сопоставитель является сопоставителем на основе COM, сделайте следующее.
Скопируйте DLL-библиотеку пользовательского сопоставителя на распространитель для принудительных подписок либо на подписчик для подписок по запросу.
Примечание Пользовательские сопоставители Майкрософт можно найти в каталоге C:\Program Files\Microsoft SQL Server\110\COM.
Используйте файл regsvr32.exe, чтобы зарегистрировать DLL-библиотеку пользовательского сопоставителя в операционной системе. Например, чтобы зарегистрировать аддитивный сопоставитель конфликтов SQL Server, введите в командной строке следующее.
regsvr32 ssradd.dll
Если сопоставитель является обработчиком бизнес-логики, разверните сборку в папке, в которой находится исполняемый файл агента слияния (replmerg.exe), в папке с приложением, вызывающим агент слияния, или в папке, указанной в параметре @dotnet_assembly_name в шаге 3.
Примечание Местом установки по умолчанию исполняемого файла агента слияния является C:\Program Files\Microsoft SQL Server\110\COM.
Указание пользовательского сопоставителя при определении статьи публикации слиянием
Если планируется использовать собственный пользовательский сопоставитель конфликтов, создайте и зарегистрируйте сопоставитель с помощью описанной выше процедуры.
На издателе выполните хранимую процедуру sp_enumcustomresolvers (Transact-SQL) и запомните имя нужного пользовательского сопоставителя в поле value результирующего набора.
В базе данных публикации на издателе выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_addmergearticle (Transact-SQL)). Укажите имя арбитра из шага 2 в параметре @article_resolver и любые нужные входные данные для пользовательского арбитра с помощью параметра @resolver_info. Для нестандартных сопоставителей, основанных на хранимых процедурах, в параметре @resolver_info указывается имя хранимой процедуры. Дополнительные сведения о входных данных, необходимых для пользовательских сопоставителей, поставляемых корпорацией Майкрософт, см. в разделе Сопоставители на базе технологии Microsoft COM.
Указание или изменение пользовательского сопоставителя для существующей статьи публикации слиянием
Чтобы выяснить, был ли пользовательский сопоставитель определен для статьи, или получить имя арбитра, выполните хранимую процедуру sp_helpmergearticle (Transact-SQL). Если для статьи был определен пользовательский сопоставитель, его имя отобразится в поле article_resolver. Любые входные данные, переданные сопоставителю, будут отображены в поле resolver_info результирующего набора.
На издателе выполните хранимую процедуру sp_enumcustomresolvers (Transact-SQL) и запомните имя нужного пользовательского сопоставителя в поле value результирующего набора.
В базе данных публикации на издателе выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_changemergearticle (Transact-SQL)). Укажите значение для article_resolver, включая полный путь к обработчику бизнес-логики, в параметре @property, и имя нужного пользовательского сопоставителя из шага 2 в параметре @value.
Чтобы изменить необходимые входные данные для пользовательского сопоставителя, выполните хранимую процедуру sp_changemergearticle (Transact-SQL) еще раз. Укажите значение resolver_info в параметре @property и любые необходимые входные данные для пользовательского сопоставителя в параметре @value. Для нестандартных сопоставителей, основанных на хранимых процедурах, в параметре @resolver_info указывается имя хранимой процедуры. Дополнительные сведения о необходимых входных данных см. в разделе Сопоставители на базе технологии Microsoft COM.
Отмена регистрации пользовательского сопоставителя конфликтов
На издателе выполните хранимую процедуру sp_enumcustomresolvers (Transact-SQL) и запомните имя пользовательского арбитра, который нужно удалить, в поле value результирующего набора.
Выполните процедуру sp_unregistercustomresolver (Transact-SQL) на распространителе. Укажите полное имя пользовательского сопоставителя из шага 1 в параметре @article_resolver.
Примеры (Transact-SQL)
В этом примере создается новая статья и указывается, что усредняющий сопоставитель конфликтов SQL Server при возникновении конфликта должен использоваться для вычисления среднего значения в столбце UnitPrice.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = 'AdvWorksSalesOrdersMerge';
SET @article = 'Products';
EXEC sp_addmergearticle
@publication = @publication,
@article = @article,
@source_object = @article,
@article_resolver = 'Microsoft SQL Server Averaging Conflict Resolver',
@resolver_info = 'UnitPrice';
GO
В этом примере изменяется статья и указывается, что аддитивный сопоставитель конфликтов SQL Server при возникновении конфликта должен использоваться для вычисления суммы значений в столбце UnitsOnOrder.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = 'AdvWorksSalesOrdersMerge';
SET @article = 'Products';
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property='article_resolver',
@value='Microsoft SQL Server Additive Conflict Resolver';
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property='resolver_info',
@value='UnitsOnOrder';
GO
[Top]
См. также
Основные понятия
Расширенное обнаружение и разрешение конфликтов репликации слиянием
Реализация обработчика бизнес-логики для статьи публикации слиянием