Aracılığıyla paylaş


Birleştirme Makale Çözümleyicisi Belirtme

Şunlar için geçerlidir: SQL Server

Bu konuda, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da bir birleştirme makale çözümleyicisi belirtme işlemi açıklanmaktadır.

Öneriler

  • Birleştirme çoğaltması aşağıdaki makale çözümleyici türlerine izin verir:

  • Varsayılan çözümleyici dışında bir çözümleyici kullanmak istiyorsanız, çözümleyiciyi Birleştirme Aracısı'nın çalıştığı bilgisayara kopyalamanız ve kaydetmeniz gerekir (eğer bir iş mantığı işleyicisi kullanıyorsanız, o da Yayımcıda kaydedilmiş olmalıdır). Birleştirme Aracısı şu konumda çalışır:

    • İtme aboneliği için Dağıtıcı

    • Çekme aboneliği abonesi

    • Web eşitlemesi kullanan bir çekme aboneliği için Microsoft Internet Information Services (IIS) sunucusu

SQL Server Management Studio'yu kullanma

Çözümleyici kaydedildikten sonra, makalenin, Yeni Yayın Sihirbazı'nda ve Yayın Özellikleri - <Yayın> iletişim kutusunda bulunan Makale Özellikleri - <Makale> iletişim kutusunun Çözümleyici sekmesinde çözümleyiciyi kullanması gerektiğini belirtin. Sihirbazı kullanma ve iletişim kutusuna erişme hakkında daha fazla bilgi için bkz. Yayın Oluşturma ve Yayın Özelliklerini Görüntüleme ve Değiştirme.

Çözümleyici belirtmek için

  1. Yeni Yayın Sihirbazı'nın Makaleler sayfasında veya Yayın Özellikleri - <Yayın> iletişim kutusunda bir tablo seçin.

  2. Makale Özellikleri'ne ve ardından Vurgulanan Tablo Makalesinin Özelliklerini Ayarla'ya tıklayın.

  3. Makale Özellikleri - <Makale> sayfasında Çözümleyici sekmesine tıklayın.

  4. Özel çözümleyici kullan 'ı (Dağıtımcıya kayıtlı) seçin ve listede çözümleyiciye tıklayın.

  5. Çözümleyici giriş gerektiriyorsa (sütun adı gibi), çözümleyicinin gerektirdiği bilgileri girin metin kutusunda belirtin.

  6. Tamam'ı seçin.

  7. Çözümleyici gerektiren her makale için bu işlemi yineleyin.

Transact-SQL Kullanımı

Özel çakışma çözümleyicisini kaydetmek için

  1. Kendi özel çakışma çözümleyicinizi kaydetmeyi planlıyorsanız aşağıdaki türlerden birini oluşturun:

  2. İstenen çözümleyicinin zaten kayıtlı olup olmadığını belirlemek için, herhangi bir veritabanında Publisher'da sp_enumcustomresolvers (Transact-SQL) yürütebilirsiniz. Bu, özel çözümleyicinin açıklamasının yanı sıra Dağıtımcı'da kayıtlı her COM tabanlı çözümleyici için sınıf tanımlayıcısını (CLSID) veya Dağıtımcı'da kayıtlı her iş mantığı işleyicisi için yönetilen derlemedeki bilgileri görüntüler.

  3. İstenen özel çözümleyici henüz kayıtlı değilse Dağıtımcı'da sp_registercustomresolver (Transact-SQL) yürütebilirsiniz. @article_resolver çözümleyici için bir ad belirtin; bir iş mantığı işleyicisi için bu, derlemenin kolay adıdır. COM tabanlı çözümleyiciler için, @resolver_clsid için DLL'nin CLSID değerini belirtin ve bir iş mantığı işleyicisi için @is_dotnet_assembly için true değerini, @dotnet_assembly_name derlemesinin adını ve @dotnet_class_name için geçersiz kılan BusinessLogicModule sınıfın tam adını belirtin.

    Uyarı

    Bir iş mantığı işleyici derlemesi, Birleştirme Aracısı çalıştırılabilir dosyasıyla aynı dizinde, Birleştirme Aracısı'nı senkron başlatan uygulamayla aynı dizinde veya genel derleme önbelleğinde (GAC) dağıtılmamışsa, @dotnet_assembly_name için derleme adıyla birlikte tam yolu belirtmeniz gerekir.

  4. Çözümleyici COM tabanlı bir çözümleyiciyse:

    • Özel çözümleyici DLL'sini gönderim abonelikleri için Dağıtımcı'ya veya çekme abonelikleri için Abone'ye kopyalayın.

      Uyarı

      Microsoft özel çözümleyicileri sürücü>:\Program Files\Microsoft SQL Server\nnn\COM dizininde bulunabilir<.

    • özel çözümleyici DLL'sini işletim sistemine kaydetmek için regsvr32.exe kullanın. Örneğin, komut isteminden aşağıdakileri yürütmek SQL Server Ekleme Çakışma Çözümleyicisi'ni kaydeder:

      regsvr32 ssradd.dll  
      
  5. Çözümleyici bir iş mantığı işleyicisiyse, derlemeyi Birleştirme Aracısı yürütülebilir dosyası (replmerg.exe) ile aynı klasöre, Birleştirme Aracısı'nı çağıran bir uygulamayla aynı klasöre veya 3. adımda @dotnet_assembly_name parametresi için belirtilen klasöre dağıtın.

    Uyarı

    Birleştirme Aracısı yürütülebilir dosyasının varsayılan yükleme konumu sürücü>:\Program Files\Microsoft SQL Server\nnn\COM şeklindedir<.

Birleştirme makalesi tanımlarken özel çözümleyici belirtme

  1. Özel çakışma çözümleyicisi kullanmayı planlıyorsanız yukarıdaki yordamı kullanarak çözümleyiciyi oluşturun ve kaydedin.

  2. Publisher'da sp_enumcustomresolvers (Transact-SQL) yürütür ve sonuç kümesinin değer alanında istenen özel çözümleyicinin adını not edin.

  3. Publisher'daki yayın veritabanında sp_addmergearticle (Transact-SQL) komutunu yürütün. @article_resolver için 2. adımdaki çözümleyicinin adını ve @resolver_info parametresini kullanarak özel çözümleyiciye gerekli girişleri belirtin. Saklı yordam tabanlı özel çözümleyiciler için @resolver_info saklı yordamın adıdır. Microsoft tarafından sağlanan çözümleyiciler için gerekli girişler hakkında daha fazla bilgi için bkz. Microsoft COM-Based Çözümleyicileri.

Var olan birleştirme makalesi için özel çözümleyici belirtme veya değiştirme

  1. Bir makale için özel çözümleyici tanımlandığını belirlemek veya çözümleyicinin adını almak için sp_helpmergearticle yürüt (Transact-SQL). Makale için tanımlanmış bir özel çözümleyici varsa, adı article_resolver alanında görüntülenir. Çözümleyiciye sağlanan tüm girişler, sonuç kümesinin resolver_info alanında görüntülenir.

  2. Publisher'da sp_enumcustomresolvers (Transact-SQL) yürütür ve sonuç kümesinin değer alanında istenen özel çözümleyicinin adını not edin.

  3. Yayın veritabanında, Publisher'da sp_changemergearticle (Transact-SQL) komutunu çalıştırın. @property için iş mantığı işleyicilerinin tam yolu ve @value için 2. adımdaki istenen özel çözümleyicinin adı da dahil olmak üzere article_resolver değerini belirtin.

  4. Özel çözümleyici için gerekli girişleri değiştirmek için sp_changemergearticle (Transact-SQL) yeniden yürütür. @property için resolver_info değeri ve @value için özel çözümleyiciye gerekli olan herhangi bir girişi belirtin. Saklı yordam tabanlı özel çözümleyiciler için @resolver_info saklı yordamın adıdır. Gerekli girişler hakkında daha fazla bilgi için bkz. Microsoft COM-Based Çözümleyicileri.

Özel çakışma çözümleyicinin kaydını kaldırma

  1. Publisher'da sp_enumcustomresolvers (Transact-SQL) yürütür ve sonuç kümesinin değer alanında kaldırılacak özel çözümleyicinin adını not edin.

  2. Dağıtımcıda sp_unregistercustomresolver (Transact-SQL) komutunu yürüt. @article_resolver için 1. adımdaki özel çözümleyicinin tam adını belirtin.

Örnekler (Transact-SQL)

Bu örnek yeni bir makale oluşturur ve çakışmalar oluştuğunda UnitPrice sütununun ortalamasını hesaplamak için SQL Server Ortalama Çakışma Çözümleyicisi'nin kullanılacağını belirtir.

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

Bu örnek, çakışmalar oluştuğunda UnitsOnOrder sütununun toplamını hesaplamak için SQL Server EklemeLi Çakışma Çözümleyicisi'ni kullanarak bir makaleyi belirtecek şekilde değiştirir.

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