Udostępnij za pośrednictwem


Jak Określ resolvera artykułu korespondencji seryjnej (Programowanie replikacji Transact-SQL)

Podczas definiowania artykuł do publikacja korespondencji seryjnej, można określić niestandardowy mechanizm rozwiązywania konfliktów.Aby uzyskać więcej informacji, zobacz Zaawansowane wykrywanie konfliktów replikacji scalania i rozdzielczości.Microsoft SQL Server includes a number of predefined custom conflict resolvers, or you can write your own.Jeśli trzeba zaimplementować logiki niestandardowej, która jest wykonywana dla każdego wiersza replikowanych, nie tylko dla wierszy powodujące konflikt, zobacz Jak Wdrożenie obsługi logiki biznesowej korespondencji seryjnej artykuł (Programowanie replikacji).

Aby zarejestrować niestandardowymechanizm rozwiązywania konfliktów

  1. Jeśli planujesz zarejestrować swój własny niestandardowy mechanizm rozwiązywania konfliktów, tworzenie jednego z następujących typów:

  2. Aby ustalić, jeżeli żądany program rozpoznawania nazw jest już zarejestrowany, sp_enumcustomresolvers (języka Transact-SQL) na Wydawca na dowolnej bazy danych.Wyświetla opis niestandardowego programu rozpoznawania nazw, jak również identyfikator klasy (CLSID) dla każdego rozpoznawania opartych na modelu COM zarejestrowanych u dystrybutora lub informacje na temat wirtualny plik dziennika zarządzanych dla każdego obsługa logika biznesowa zarejestrowany u dystrybutora.

  3. Jeśli żądany niestandardowego programu rozpoznawania nazw nie jest już zarejestrowany, wykonać sp_registercustomresolver (języka Transact-SQL) u dystrybutora.Określ nazwę dla rozpoznawania nazw dla @ article_resolver; dla obsługa logika biznesowa, to jest przyjazna nazwa wirtualny plik dziennika.Dla rozpoznawania nazw opartych na modelu COM, należy określić identyfikator CLSID DLL dla @ resolver_clsidi obsługa logika biznesowa, określ wartość true dla @ is_dotnet_assembly, nazwa wirtualny plik dziennika dla @ dotnet_assembly_namei w pełni kwalifikowaną nazwę klasy, która zastępuje BusinessLogicModule dla @ dotnet_class_name.

    Ostrzeżenie

    Zespół obsługi logika biznesowa nie jest wdrożony w tym samym katalogu co Agent Scal pliki wykonywalne, w tym samym katalogu jako Agent scalić to synchronicznie uruchamiania aplikacji lub w Global Assembly Cache (GAC), należy określić pełną ścieżka z nazwę wirtualny plik dziennika @ dotnet_assembly_name.

  4. Jeśli program rozpoznawania nazw jest rozpoznawania nazw opartych na modelu COM:

    • Kopiowanie do dystrybutora niestandardowego programu rozpoznawania nazw DLL dla wypychanie subskrypcji lub subskrybentowi w subskrypcji ściąganej.

      Ostrzeżenie

      Microsoftniestandardowe programy rozpoznawania nazw można znaleźć w C:\Program Files\Microsoft SQL Server\100\COM katalogu.

    • Użyj programu regsvr32.exe zarejestrować niestandardowego programu rozpoznawania nazw DLL w systemie operacyjnym.Na przykład, wykonywanie następujących wiersz polecenia rejestruje SQL Server Rozwiązywanie konfliktów dodatku:

      regsvr32 ssradd.dll
      
  5. Jeśli program rozpoznawania nazw jest obsługa logika biznesowa, wdrożyć wirtualny plik dziennika w folderze wykonywalnego scalić Agent (replmerg.exe), w tym samym folderze co aplikacja wywoła agenta scalania lub w folderze określonym dla @ dotnet_assembly_name parametr w kroku 3.

    Ostrzeżenie

    Domyślną lokalizacją instalacji agenta scalić plik wykonywalny jest C:\Program Files\Microsoft SQL Server\100\modelu COM.

Aby określić niestandardowego programu rozpoznawania nazw podczas definiowania artykuł korespondencji seryjnej

  1. Jeśli zamierzasz używać niestandardowej mechanizm rozwiązywania konfliktów, utworzyć i zarejestrować programu rozpoznawania nazw za pomocą powyższej procedury.

  2. Wydawca, należy wykonać sp_enumcustomresolvers (języka Transact-SQL) i zanotuj nazwę żądanego niestandardowego programu rozpoznawania nazw w wartość pole z zestaw wyników.

  3. Wydawca na baza danych publikacja, wykonanie sp_addmergearticle (języka Transact-SQL).Określ nazwę programu rozpoznawania nazw w kroku 2 dla @ article_resolver i wymagane dane wejściowe do niestandardowego programu rozpoznawania nazw za pomocą @ resolver_info parametru.Do przechowywanej procedury na podstawie niestandardowych resolvery @ resolver_info to nazwa procedura składowana.Więcej informacji o wymagane dane wejściowe dla rozpoznawania nazw, dostarczonych przez Microsoft, zobacz Programy rozpoznawania nazw opartych na modelu COM firmy Microsoft.

Aby określić lub zmienić niestandardowego programu rozpoznawania nazw dla istniejącego artykuł korespondencji seryjnej

  1. Aby określić niestandardowego programu rozpoznawania nazw, w której zdefiniowano artykuł lub nazwy rozpoznawania nazw, wykonać sp_helpmergearticle (języka Transact-SQL).W przypadku niestandardowego programu rozpoznawania nazw zdefiniowanych dla artykuł, jego nazwa zostanie wyświetlona w article_resolver pole.Żadnych danych dostarczonych do rozpoznawania nazw, które będą wyświetlane w resolver_info pole zestaw wyników.

  2. Wydawca, należy wykonać sp_enumcustomresolvers (języka Transact-SQL) i zanotuj nazwę żądanego niestandardowego programu rozpoznawania nazw w wartość pole zestaw wyników.

  3. Wydawca na baza danych publikacja, wykonanie sp_changemergearticle (języka Transact-SQL).Określ wartość article_resolver, łącznie z pełnego ścieżka dla obsługi logika biznesowa, dla @ Właściwośći nazwę żądanego niestandardowego programu rozpoznawania nazw w kroku 2 dla wartość @.

  4. Aby zmienić wszystkie wymagane dane wejściowe dla niestandardowego programu rozpoznawania nazw wykonać sp_changemergearticle (języka Transact-SQL) ponownie.Określ wartość resolver_info dla @ Właściwość i wymagane dane wejściowe do niestandardowego programu rozpoznawania nazw dla wartość @.Do przechowywanej procedury na podstawie niestandardowych resolvery @ resolver_info to nazwa procedura składowana.Aby uzyskać więcej informacji na temat wprowadzania wymaganych Zobacz Programy rozpoznawania nazw opartych na modelu COM firmy Microsoft.

Aby wyrejestrować niestandardowymechanizm rozwiązywania konfliktów

  1. Wydawca, należy wykonać sp_enumcustomresolvers (języka Transact-SQL) i zanotuj nazwę niestandardowego programu rozpoznawania nazw do usunięcia w wartość pole zestaw wyników.

  2. Wykonanie sp_unregistercustomresolver (języka Transact-SQL) u dystrybutora.Podaj pełną nazwę niestandardowego programu rozpoznawania nazw z kroku 1 dla @ article_resolver.

Przykład

W tym przykładzie tworzy nowy artykuł i określa, że SQL Server Rozwiązywanie konfliktów uśrednianie używane do obliczania średniej CenaJednostkowa kolumna, gdy występują konflikty.

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

W tym przykładzie zmienia artykuł określić za pomocą SQL Server dodatku Rozwiązywanie konfliktów, aby obliczyć sumę JednostkiZamówione kolumna, gdy występują konflikty.

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