Aracılığıyla paylaş


Özel çakışma Çözücü birleştirme makalesi gerçekleştir

Bu konuda özel çakışma çözümleyici birleştirme makale içinde uygulamak açıklar SQL Server 2012kullanarak Transact-SQLya da bir com tabanlı özel çözümleyici.

Bu Konuda

  • Özel çakışma çözümleyici birleştirme makale, uygulamaya kullanarak:

    Transact-SQL

    com tabanlı çözümleyici

Transact-SQL'i Kullanma

Sen-ebilmek yazmak senin kendi özel çakışma çözümleyici olarak bir Transact-SQLsaklı yordamı her yayımcı adresindeki. Eşitleme sırasında hangi çözümleyici kaydedildi ve çakışma satır bilgi yordamı gerekli parametreler için Birleştirme Aracısı tarafından geçirilen bir makale çakışmaları karşılaşıldığında bu saklı yordamı çağrılır. Saklı yordam tabanlı özel çakışma çözümleyiciler her zaman yayımcı oluşturulur.

[!NOT]

Microsoft SQL Serversaklı yordam çözümleyiciler, yalnızca satır değişiklik tabanlı çakışmaları işlemek için çağrılır. Çakışmaları ekleme hataları birincil anahtar ihlalleri veya benzersiz dizin kısıtlama ihlalleri nedeniyle gibi başka tür işlemek için kullanılamaz.

Saklı yordam tabanlı özel çakışma çözümleyici oluşturmak için

  1. Ya da yayın yayımcı veya msdb veritabanı, aşağıdaki gerekli parametreleri uygulayan yeni bir sistem saklı yordamını oluşturun:

    Parametre

    Veri türü

    Açıklama

    @ tableowner

    sysname

    Çakışma çözümleniyor tablo sahibinin adı. Yayını veritabanındaki tablo sahibi olmasıdır.

    tableName @

    sysname

    Kendisi için bir çakışma giderilip tablonun adı.

    rowguid @

    uniqueidentifier

    Çakışmayı sahip satır benzersiz tanımlayıcısı.

    @ abone

    sysname

    Burada Çakışan değişikliği yayılmasını sunucunun adı.

    @ subscriber_db

    sysname

    Burada Çakışan değişikliği yayılmasını veritabanının adı.

    @ log_conflict çıktı

    int

    İster birleştirme işlemi bir çakışma sonrası çözümleme için oturum açmanız gerekir:

    0 = Yapın çakışmayı oturum değil.

    1 = Abone olup çakışma kaybeden.

    2 = Publisher çakışma kaybeden olduğunu.

    @ conflict_message çıktı

    nvarchar(512)

    Çakışmayı oturum açmışsa çözünürlüğü hakkında verilecek mesaj.

    @ destowner

    sysname

    Abone adresindeki yayımlanmış tablonun sahibi.

    Bu saklı yordam, özel çakışma çözünürlüğü mantığı uygulamak için bu parametreler için Birleştirme Aracısı tarafından geçirilen değerleri kullanır; temel tablo yapısı aynıdır ve satır kazanan sürümü için veri değerlerini içeren bir tek satır sonuç kümesi döndürmelidir.

  2. Saklı yordam tarafından aboneleri için yayımcı bağlanmak için kullanılan tüm oturumları için yürütme izinlerini atayın.

Yeni bir tablo makale ile özel çakışma çözümleyici kullanmak için

  • Yürütme sp_addmergearticle bir değer belirterek bir makale tanımlamak için SQL Server depolanmış yordam Çözümleyicisi için @ article_resolver parametre ve çakışma çözümleyici mantığı uygulayan saklı yordam adı @ resolver_info parametresi. Daha fazla bilgi için, bkz. Bir makale tanımlamak.

Varolan bir tablo makale ile özel çakışma çözümleyici kullanmak için

  1. Yürütme sp_changemergearticle, belirten @ yayın, @ makale, değeri article_resolver için @ özellikbir SQL Server depolanmış yordamçözümleyici için @ değeri.

  2. Yürütme sp_changemergearticle, belirten @ yayın, @ makale, değeri resolver_info için @ özellik, çakışma çözümleyici mantığı uygulayan saklı yordamın adını @ değeri.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Bir com tabanlı özel çözümleyici kullanarak

Microsoft.SqlServer.Replication.BusinessLogicSupportAd alanını uygulayan olayları işlemek ve birleştirme çoğaltma eşitleme işlemi sırasında oluşan çakışmaları çözmek için karmaşık iş mantığı yazmanızı sağlayan bir arabirim. Daha fazla bilgi için bkz: Birleştirme makale Business Logic işleyicisi gerçekleştir.Çakışmaları çözmek için kendi yerel kod tabanlı özel iş mantığı da yazabilirsiniz. Bu mantık bir com bileşeni olarak inşa ve ürünleri gibi kullanarak dinamik bağlantı kitaplıkları (dll), derlenmiş MicrosoftVisual c++. Böyle COM–based özel çakışma çözümleyici uygulamak gerekir ICustomResolver arabirimi, özel çakışma çözünürlüğü için tasarlanmıştır.

Oluşturmak ve bir com tabanlı özel çakışma çözümleyici kaydetmek için

  1. Bir com uyumlu geliştirme ortamında özel çakışma çözümleyici kitaplığı başvurular ekleyin.

  2. Visual c++ proje için bu kitaplığı projenize almak için alma yönergesini kullanın.

  3. Uygulayan bir sınıf oluşturmak ICustomResolver arabirimi.

  4. Belirli yöntemler ve özellikler uygular.

  5. Özel çakışma çözümleyici kitaplık dosyasını oluşturmak için projeyi derleyin.

  6. Birleştirme Aracısı yürütülebilir (genellikle \Microsoft SQL Server\100\COM) içeren dizin kitaplığında dağıtın.

    [!NOT]

    Çekme abonelik abone adresindeki itme abonelik dağıtımcı veya Web sunucusu ile Web eşitleme kullanılan özel çakışma çözümleyici dağıtılması gerekir.

  7. Regsvr32.exe dağıtım dizinden aşağıdaki gibi kullanarak özel çakışma çözümleyici kitaplığı kaydolun:

    regsvr32.exe mycustomresolver.dll
    
    regsvr32.exe mycustomresolver.dll
    
  8. Yayımcı tarafında idam sp_enumcustomresolvers (Transact-sql)Kitaplık zaten özel çakışma çözümleyici kaydettirilmemiş doğrulamak için.

  9. Kütüphane özel çakışma çözümleyici kaydetmek için idam sp_registercustomresolver (Transact-sql), dağıtımcı. com nesnesi için kolay adını belirtmek @ article_resolver, kütüphanenin kimliği (CLSID) için @ resolver_clsidve falseiçin @ is_dotnet_assembly.

    [!NOT]

    Gerek kalmadığında, özel çakışma çözümleyici kullanarak kayıtsız olabilir sp_unregistercustomresolver (Transact-sql).

  10. (İsteğe bağlı) Bir kümede, kümenin tüm düğümlerinde özel çözümleyici kaydetmek için 5-8 adımları yineleyin. Bu özel çözümleyici düzgün yük devretme sonrasında Uzlaştırıcısı edebilecektir sağlamak için gereklidir.

Yeni bir tablo makale ile özel çakışma çözümleyici kullanmak için

  1. Yayımcı tarafında idam sp_enumcustomresolvers (Transact-sql)ve istenen çözümleyici kolay adı unutmayın.

  2. Yayını veritabanı üzerinde Yayımcı tarafında idam yürütmesp_addmergearticle (Transact-sql)bir makale tanımlamak için. Adım 1'den makale çözümleyici kolay adı belirtmek @ article_resolver. Daha fazla bilgi için, bkz. Bir makale tanımlamak.

Varolan bir tablo makale ile özel çakışma çözümleyici kullanmak için

  1. Yayımcı tarafında idam sp_enumcustomresolvers (Transact-sql)ve istenen çözümleyici kolay adı unutmayın.

  2. Yürütme sp_changemergearticle (Transact-sql), belirtme @ yayın, @ makale, değeri article_resolver için @ özellikve adım 1'den makale çözümleyici kolay adı @ değeri.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Ayrıca bkz.

Kavramlar

Gelişmiş birleştirme çoğaltma çakışma algılaması ve Çözümlemesi

com tabanlı özel çözümleyiciler

ModeliveÇoğaltma güvenlik en iyi uygulamalar