Ö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
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.
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
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.
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.
[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
Bir com uyumlu geliştirme ortamında özel çakışma çözümleyici kitaplığı başvurular ekleyin.
Visual c++ proje için bu kitaplığı projenize almak için alma yönergesini kullanın.
Uygulayan bir sınıf oluşturmak ICustomResolver arabirimi.
Belirli yöntemler ve özellikler uygular.
Özel çakışma çözümleyici kitaplık dosyasını oluşturmak için projeyi derleyin.
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.
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
Yayımcı tarafında idam sp_enumcustomresolvers (Transact-sql)Kitaplık zaten özel çakışma çözümleyici kaydettirilmemiş doğrulamak için.
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).
(İ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
Yayımcı tarafında idam sp_enumcustomresolvers (Transact-sql)ve istenen çözümleyici kolay adı unutmayın.
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
Yayımcı tarafında idam sp_enumcustomresolvers (Transact-sql)ve istenen çözümleyici kolay adı unutmayın.
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.
[Top]
Ayrıca bkz.
Kavramlar
Gelişmiş birleştirme çoğaltma çakışma algılaması ve Çözümlemesi