Nasıl Yapılır: Bir birleştirme makalesi Çözümleyicisi (çoğaltma Transact-SQL programlama) belirtin.
Bir makale için bir birleştirme yayın tanımlarken, özel çakışma giderici belirtebilirsiniz.For more information, see Gelişmiş birleştirme çoğaltması çakışma algılaması ve Çözümlemesi.Microsoft SQL Server includes a number of predefined custom conflict resolvers, or you can write your own.Çoğaltılan her satır için yürütülen özel mantık uygulamak istediğinizde yalnızca çakışan satırlar için bkz: Nasıl Yapılır: Uygulamanız bir iş mantığı işleyicisi için bir birleştirme makalesi (çoğaltma programlama).
Özel çakışma giderici kaydedilemedi.
Kendi özel çakışma giderici kaydetmek istiyorsanız, aşağıdakilerden birini oluşturun:
Koda dayalı Çözümleyici, iş mantığı işleyicisi olarak yönetilen.Daha fazla bilgi için bkz: Nasıl Yapılır: Uygulamanız bir iş mantığı işleyicisi için bir birleştirme makalesi (çoğaltma programlama).
Saklı yordam tabanlı çözümleyici.Daha fazla bilgi için bkz: Nasıl Yapılır: Bir saklı yordam-based özel çakışma giderici bir birleştirme makalesi (çoğaltma Transact-SQL programlama) için uygular..
COM tabanlı çözümleyici.Daha fazla bilgi için bkz: Nasıl Yapılır: Bir COM tabanlı özel çakışma giderici bir birleştirme makalesi (çoğaltma programlama) için uygular..
Istenen çözümleyici zaten kayıtlı olup olmadığını belirlemek için , yürütmek sp_enumcustomresolvers (Transact-SQL) herhangi bir veritabanı, Yayımcı tarafında. Dağıtımcı veya yönetilen dağıtıcı sırasında kaydedilen her iş mantığı işleyicisi derleme bilgileri kaydedilen her bir COM tabanlı çözümleyici için sınıf tanımlayıcısı (CLSID) yanı sıra, özel çözümleyici açıklamasını görüntüler.
Istediğiniz özel çözümleyici zaten kayıtlı, yürütmek sp_registercustomresolver (Transact-SQL) dağıtımcı. Çözümleyici için bir ad belirtin. @ article_resolver; iş mantığı işleyicisi derleme kolay adı budur.COM tabanlı, çözümleyiciler için CLSID için DLL dosyasının belirtin. @ resolver_clsid değerinde bir iş mantığı işleyicisi belirtintrue için @ is_dotnet_assembly için derleme adı**@ dotnet_assembly_name**ve geçersiz kılan sınıfının Tam adıBusinessLogicModule için @ dotnet_class_name.
Not
iş mantığı işleyicisi derleme Birleştirme Aracısı yürütülebilir aynı dizinde dağıtmış, uygulama ile aynı dizinde, zaman uyumlu olarak birleştirme aracı başlatır veya genel derleme önbelleği (GAC) için derleme adı ile tam yolunu belirtmeniz gerekir @ dotnet_assembly_name.
Çözümleyici bir COM tabanlı çözümleyici ise:
Özel DLL çözümleyici dağıtımcı gönderme abonelikleri için veya çekme abonelikler abone kopyalayın.
Not
Microsoft Özel çözümleyiciler bulunabilir C:\Program Files\Microsoft SQL Server\100\COM dizin.
Özel DLL çözümleyici işletim sistemiyle birlikte kaydetmek için Regsvr32.exe aracı'nı kullanın.Örneğin, aşağıdaki komut istemi isteminden çalıştırma kaydettirir SQL Server çakışma giderici eklenebilir:
regsvr32 ssradd.dll
Çözümleyici bir iş mantığı işleyicisi, Birleştirme Aracısı çağıran bir uygulama ile aynı klasörde veya klasörü için belirtilen derleme Birleştirme Aracısı yürütülebilir dosyayı (replmerg.exe) ile aynı klasörde dağıtmak @ dotnet_assembly_name parametresi (adım 3).
Not
Birleştirme Aracısı yürütülebilir varsayılan yükleme konumu C:\Program Files\Microsoft SQL Server\100\com.
Bir birleştirme makalesini tanımlarken, özel bir çözümleyici belirtmek için
Özel çakışma giderici kullanmayı planlıyorsanız, oluşturun ve yukarıdaki yordamı kullanarak çözümleyici kaydedin.
Yayımcı tarafında yürütmek sp_enumcustomresolvers (Transact-SQL) ve istediğiniz özel Çözümleyici'de adını not edin değer alan sonucunun küme.
yayın veritabanı Yayımcı tarafında yürütmek sp_addmergearticle (Transact-SQL). Çözümleyici için adım 2'deki adını belirtin @ article_resolver ve tüm kullanarak özel bir çözümleyici giriş gerekli**@ resolver_info** parametresi.Saklı yordam tabanlı özel çözümleyiciler için @ resolver_info saklı yordamın adıdır.Çözümleyiciler, tarafından sağlanan gerekli giriş hakkında daha fazla bilgi için Microsoft, bkz: Microsoft COM tabanlı çözücüler.
Belirtmek veya varolan bir birleştirme makale için özel bir çözümleyici değiştirmek için
Bir makale için tanımlanmış özel bir çözümleyici belirlemek veya çözümleyici adını almak için yürütmek sp_helpmergearticle (Transact-SQL). Bu makale için tanımlanan özel bir çözümleyici ise, adı görüntülenecektir article_resolver alan.Çözümleyici için sağlanan herhangi bir giriş içinde görüntülenen resolver_info alan sonucunun küme.
Yayımcı tarafında yürütmek sp_enumcustomresolvers (Transact-SQL) ve istediğiniz özel Çözümleyici'de adını not edin değer alan sonucunun küme.
yayın veritabanı Yayımcı tarafında yürütmek sp_changemergearticle (Transact-SQL). Bir değer belirtin. article_resolver için iş mantığı işleyicileri tam yol dahil olmak üzere,@ özellikve istenen özel çözümleyici adım 2'deki adıdeğer.
Gerekli herhangi bir giriş için özel Çözümleyicisi'ni değiştirmek için , yürütmek sp_changemergearticle (Transact-SQL) yeniden. Bir değer belirtin. resolver_info for @ özellik ve tüm özel çözümleyici giriş için gerekli.değer.Saklı yordam tabanlı özel çözümleyiciler için @ resolver_info saklı yordamın adıdır.Gerekli bir girdi hakkında daha fazla bilgi için bkz: Microsoft COM tabanlı çözücüler.
Özel çakışma giderici kaydı silinemedi.
Yayımcı tarafında yürütmek sp_enumcustomresolvers (Transact-SQL) ve kaldırmak için özel bir çözümleyici adını not edin değer alan sonucunun küme.
yürütmek sp_unregistercustomresolver (Transact-SQL) dağıtımcı. Özel çözümleyici için adım 1'deki tam adını belirtin. @ article_resolver.
Example
Bu örnek, yeni bir makale oluşturur ve belirleyen SQL Server Ortalamasını çakışma giderici ortalamasını hesaplamak için kullanılacak BirimFiyat sütun çakışmaları oluştuğunda.
Bu örnek kullanarak belirtmek üzere makale değiştirir SQL Server Toplamını hesaplamak için toplama çakışma giderici SiparişBirimleri sütun çakışmaları oluştuğunda.