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


Определение сопоставителя статей публикации слиянием

В этом разделе описывается определение арбитра статей публикации слиянием в SQL Server 2012 с помощью среды Среда SQL Server Management Studio или Transact-SQL.

В этом разделе

  • Перед началом работы выполните следующие действия.

    Рекомендации

  • Для определения арбитра статей публикации слиянием используется:

    Среда SQL Server Management Studio

    Transact-SQL

Перед началом

Рекомендации

  • Репликация слиянием допускает следующие типы сопоставителей статей:

  • Чтобы использовать сопоставитель, отличный от сопоставителя по умолчанию, необходимо скопировать сопоставитель на компьютер, на котором выполняется агент слияния, и зарегистрировать его (если используется обработчик бизнес-логики, он также должен быть зарегистрирован на издателе). Агент слияния выполняется на:

    • распространителе для принудительной подписки;

    • подписчике для подписки по запросу;

    • IIS-сервере Майкрософт для подписки по запросу, которая использует веб-синхронизацию.

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование среды SQL Server Management Studio

После регистрации сопоставителя укажите, что статья должна использовать данный арбитр, выполнив настройки на вкладке Сопоставитель диалогового окна Свойства статьи — <статья>, которое доступно в мастере создания публикаций и в диалоговом окне Свойства публикации — <публикация>. Дополнительные сведения об использовании этого мастера и о доступе к этому диалоговому окну см. в разделах Создание публикации и Просмотр и изменение свойств публикации.

Указание сопоставителя

  1. На странице Статьи мастера создания публикации или в диалоговом окне Свойства публикации — <публикация> выберите таблицу.

  2. Щелкните Свойства статьи, затем щелкните Указать свойства выделенной статьи таблицы.

  3. На странице Свойства статьи — <статья> щелкните вкладку Арбитр конфликтов.

  4. Выберите Использовать пользовательский сопоставитель (зарегистрированный на распространителе):, затем щелкните в списке сопоставитель.

  5. Если сопоставитель запрашивает входные данные (такие, как имя столбца), укажите их в текстовом поле Введите данные, необходимые сопоставителю.

  6. Нажмите кнопку ОК.

  7. Повторите этот процесс для каждой статьи, которая запрашивает сопоставитель.

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование Transact-SQL

Регистрация пользовательского сопоставителя конфликтов

  1. Если планируется зарегистрировать собственный пользовательский сопоставитель конфликтов, создайте один из следующих типов.

  2. Чтобы определить, зарегистрирован ли нужный сопоставитель, выполните хранимую процедуру sp_enumcustomresolvers (Transact-SQL) на издателе для любой базы данных. Будет выведено описание пользовательского сопоставителя, а также идентификатор класса (CLSID) для каждого сопоставителя на основе COM, зарегистрированного на распространителе, или сведения об управляемой сборке для каждого обработчика бизнес-логики, зарегистрированного на распространителе.

  3. Если нужный пользовательский сопоставитель еще не зарегистрирован, выполните хранимую процедуру 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.

  4. Если сопоставитель является сопоставителем на основе COM, сделайте следующее.

    • Скопируйте DLL-библиотеку пользовательского сопоставителя на распространитель для принудительных подписок либо на подписчик для подписок по запросу.

      ПримечаниеПримечание

      Пользовательские сопоставители Майкрософт можно найти в каталоге C:\Program Files\Microsoft SQL Server\110\COM.

    • Используйте файл regsvr32.exe, чтобы зарегистрировать DLL-библиотеку пользовательского сопоставителя в операционной системе. Например, чтобы зарегистрировать аддитивный сопоставитель конфликтов SQL Server, введите в командной строке следующее.

      regsvr32 ssradd.dll
      
  5. Если сопоставитель является обработчиком бизнес-логики, разверните сборку в папке, в которой находится исполняемый файл агента слияния (replmerg.exe), в папке с приложением, вызывающим агент слияния, или в папке, указанной в параметре @dotnet_assembly_name в шаге 3.

    ПримечаниеПримечание

    Местом установки по умолчанию исполняемого файла агента слияния является C:\Program Files\Microsoft SQL Server\110\COM.

Указание пользовательского сопоставителя при определении статьи публикации слиянием

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

  2. На издателе выполните хранимую процедуру sp_enumcustomresolvers (Transact-SQL) и запомните имя нужного пользовательского сопоставителя в поле value результирующего набора.

  3. В базе данных публикации на издателе выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_addmergearticle (Transact-SQL)). Укажите имя арбитра из шага 2 в параметре @article_resolver и любые нужные входные данные для пользовательского арбитра с помощью параметра @resolver_info. Для нестандартных сопоставителей, основанных на хранимых процедурах, в параметре @resolver_info указывается имя хранимой процедуры. Дополнительные сведения о входных данных, необходимых для пользовательских сопоставителей, поставляемых корпорацией Майкрософт, см. в разделе Сопоставители на базе технологии Microsoft COM.

Указание или изменение пользовательского сопоставителя для существующей статьи публикации слиянием

  1. Чтобы выяснить, был ли пользовательский сопоставитель определен для статьи, или получить имя арбитра, выполните хранимую процедуру sp_helpmergearticle (Transact-SQL). Если для статьи был определен пользовательский сопоставитель, его имя отобразится в поле article_resolver. Любые входные данные, переданные сопоставителю, будут отображены в поле resolver_info результирующего набора.

  2. На издателе выполните хранимую процедуру sp_enumcustomresolvers (Transact-SQL) и запомните имя нужного пользовательского сопоставителя в поле value результирующего набора.

  3. В базе данных публикации на издателе выполните процедуру изменения задержки и проверки соединений для репликации транзакций (sp_changemergearticle (Transact-SQL)). Укажите значение для article_resolver, включая полный путь к обработчику бизнес-логики, в параметре @property, и имя нужного пользовательского сопоставителя из шага 2 в параметре @value.

  4. Чтобы изменить необходимые входные данные для пользовательского сопоставителя, выполните хранимую процедуру sp_changemergearticle (Transact-SQL) еще раз. Укажите значение resolver_info в параметре @property и любые необходимые входные данные для пользовательского сопоставителя в параметре @value. Для нестандартных сопоставителей, основанных на хранимых процедурах, в параметре @resolver_info указывается имя хранимой процедуры. Дополнительные сведения о необходимых входных данных см. в разделе Сопоставители на базе технологии Microsoft COM.

Отмена регистрации пользовательского сопоставителя конфликтов

  1. На издателе выполните хранимую процедуру sp_enumcustomresolvers (Transact-SQL) и запомните имя пользовательского арбитра, который нужно удалить, в поле value результирующего набора.

  2. Выполните процедуру 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]

См. также

Основные понятия

Расширенное обнаружение и разрешение конфликтов репликации слиянием

Реализация обработчика бизнес-логики для статьи публикации слиянием