Eşler arası çoğaltma çakışma algılama

Ekleme, güncelleştirme, veya topolojisinde herhangi bir düğümdeki verileri silmeniz ve veri değişiklikleri eşler arası işlem çoğaltma sağlar, diğer düğümlere yayılır. Herhangi bir düğümdeki verileri değiştirebildiğinden, veri değişiklikleri farklı düğümleri birbirleriyle çakışıyor. Bir satır birden fazla düğüme değiştirilirse, satır diğer düğümlere yayılır bu çakışma veya hatta kayıp güncelleştirmesi neden olabilir.

Eşler arası çoğaltma SQL Server 2008ve sonraki sürümleri bir peer-to-peer topoloji arasında çakışma algılamasını etkinleştirmek için bir seçenek sağlar. Bu seçenek tarafından algılanmayan çatışmalar tutarsız uygulama davranışını ve kayıp güncelleştirmeler dahil olmak üzere, neden olduğu sorunları engellemeye yardımcı. Bu seçeneği etkinken, varsayılan olarak bir çakışan değişikliği Dağıtım Aracısı başarısızlığın nedenlerini kritik bir hata değerlendirilir. Bir çatışma halinde, topoloji, çakışmanın giderilip ve verileri topoloji tutarlı hale kadar tutarsız bir durumda kalır.

[!NOT]

Potansiyel veri tutarsızlığı önlemek için daha etkin çakışma algılama ile bir eşler arası topoloji, çatışmaları önlemek emin olun. Yazma işlemleri için belirli bir satırda yalnızca tek bir düğüm gerçekleştirilir, erişim ve veri değiştirme uygulamaları ekleme bölümü gerekir emin olmak için güncelleştirme ve silme işlemleri. Bu bölümleme satır farklı bir düğüm tarafından değiştirilmeden önce bu topoloji diğer tüm düğümlerle düğüme menşeli belirli bir satıra değişiklikler eşitlenir sağlar. Uygulama gelişmiş çakışma algılaması ve Çözümlemesi yetenekleri gerektiriyorsa, birleştirme çoğaltması kullanın. Daha fazla bilgi için Çoğaltma Birleştirve Algılamak ve birleştirme çoğaltma Çakışmalarını Çöz.

Anlama çakışmaları ve çakışma algılama

Tek bir veritabanında aynı satıra farklı uygulamalar tarafından yapılan değişiklikler bir çakışma neden olmaz. Çünkü işlemleri sıralanmış ve kilitleri eşzamanlı değişiklikler işlemesi için kullanılan budur. Bir zaman uyumsuz dağıtılmış sisteminin peer-to-peer çoğaltma gibi hareketler bağımsız olarak her düğümde davranmak; ve birden çok düğüm üzerinde işlemleri seri hale getirmek için bir mekanizma. İki evreli tamamlama gibi bir protokolü kullanılabilir, ancak bu önemli ölçüde performansı etkiler.

Değişiklikleri tek tek eş kaydedilmiş olduğunda peer-to-peer çoğaltma gibi sistemlerinde, çakışmaları algılanmaz. Bunun yerine, değişiklikler çoğaltılır ve uygulanan diğer eş ne zaman onlar algılanır. Eşler arası çoğaltma, çatışmalar, yayımlanan her tablo gizli bir sütuna göre her düğüm değişiklikleri uygulamak saklı yordamlar tarafından algılanır. Bu gizli sütun birleştiren kimliğini saklayan bir iletiyi gönderen Kımlığı her düğüm ve satır sürümü için belirttiğiniz. Eşitleme sırasında her tablo için yordamlar için dağıtım aracı yürütür. Bu yordamlar, ekleme, güncelleştirme ve silme işlemleri sayfasından diğer eş geçerlidir. Gizli sütun değeri okuduğunda yordamlardan birini bir çakışma algılarsa, önem düzeyi 16 olan hata 22815 yükseltir:

A conflict of type '%s' was detected at peer %d between peer %d (incoming), transaction id %s and peer %d (on disk), transaction id %s

Varsayılan olarak, bu düğüme değişiklikleri uygulamadan durdurmak dağıtım aracı bu hataya neden olur. Nasıl algılanacağını çakışmaları hakkında daha fazla bilgi için bkz: "Çakışmalarını işleme" Bu konudaki.

[!NOT]

Gizli sütun adanmış yönetici bağlantısı (dac aracılığıyla) oturum açmış bir kullanıcı tarafından erişilebilir. dac hakkında daha fazla bilgi için bkz: Veritabanı yöneticileri için teşhis bağlantısı.

Peer-to-peer çoğaltma çakışmaları aşağıdaki türlerini algılar:

  • Ekle ekleme

    Eşler arası çoğaltma işlemine katılan her tablodaki tüm satırların benzersiz birincil anahtar değerleri kullanılarak tanımlanır. Aynı anahtar değeri ile bir satır birden fazla düğüme eklenen bir INSERT ekleme çakışması oluşur.

  • Güncelleştirme güncelleştirme

    Aynı satır birden fazla düğüme güncelleştirildiği oluşur.

  • Ekleme-Güncelleme

    Bir satırda tek bir düğüm güncelleştirildi, ancak aynı satır silindi ve başka bir düğümden reinserted oluşur.

  • Ekle-Sil

    Tek bir düğüm bir satır silindi, ancak aynı satır silindi ve başka bir düğümden reinserted oluşur.

  • Güncelleme-silme

    Bir satırda tek bir düğüm güncelleştirildi, ancak aynı satır başka bir düğüme silindi oluşur.

  • Sil Sil

    Bir satır birden fazla düğüme silindi oluşur.

Çakışma algılamasını etkinleştirme

Çakışma algılama özelliğini kullanmak için tüm düğümler çalışmalıdır SQL Server 2008veya sonraki bir sürümü; ve algılama tüm düğümleri için etkinleştirilmiş olması gerekir. İçinde SQL Server 2008ve sonraki sürümlerinde, varsayılan olarak, çakışma algılama etkinleştirilir SQL Server Management Studio. Algılama, hatta herhangi bir çakışma beklemeyin senaryolarda etkin olmasını öneririz. Çakışma algılama etkinleştirilebilir ve kullanılarak devre dışı Management Studioya Transact-SQLsaklı yordamlar:

  • Etkinleştirebilir ve algılama devre dışı Management Studiokullanarak Abonelik seçenekleri sayfası Yayın özelliklerini iletişim kutusu veya Topolojisini yapılandır eşler arası topoloji Yapılandır Sihirbazı sayfası. Daha fazla bilgi için, bkz. Eşler arası çoğaltma çakışma algılama.

    Çakışma algılamasını kullanarak yapılandırırsanız, Management Studio, Dağıtım Aracısı bir çakışma algılandığında değişiklikleri uygulamadan durdurmak için yapılandırılır.

  • Ayrıca etkinleştirebilir ve aşağıdaki saklı yordamları kullanarak Algılama devre dışı: sp_addpublication ya sp_configure_peerconflictdetection. Daha fazla bilgi için, bkz. Eşler arası çoğaltma çakışma algılama.

    Çakışma algılama saklı yordamları kullanarak yapılandırırsanız, bir çakışma algılandığında değişiklikleri uygulayarak dağıtım aracısı durdurmak gerekir olup olmadığını belirtebilirsiniz. Aracı durdurmak varsayılandır. Varsayılan ayarı kullanmanızı öneririz.

Çakışmalarını işleme

Eşler arası çoğaltma, bir çakışma ortaya çıktığında Peer-to-peer conflict detection alertortaya çıkar. Bir çakışma olduğunda size bildirilir ki bu uyarı yapılandırmanızı öneririz. Uyarılar hakkında daha fazla bilgi için bkz: Çoğaltma aracısı olayları için uyarıları kullanma.

Sonra Dağıtım Aracısı durur ve uyarı geçirilen, oluştu çakışmaları işlemek için aşağıdaki yaklaşımlardan birini kullanın:

  • Burada gerekli verileri (Önerilen yaklaşım) içeren bir düğümü yedekten çakışması algılandı düğüm yeniden. Bu yöntem, verilerin tutarlı bir durumda olmasını sağlar.

  • Değişiklikleri uygulamak devam etmek dağıtım aracı etkinleştirerek düğüm yeniden eşitlemeye çalıştığınızda:

    1. Yürütme vesp_changepublication: belirtmek 'p2p_continue_onconflict'için @propertyparametre ve trueiçin @valueparametresi.

    2. Dağıtım Aracısı'nı yeniden başlatın.

    3. Çakışma Görüntüleyici'yi kullanarak tespit edildi çakışmaları doğrulayın ve dahil satırları, çakışma türü ve kazanan saptamak. Yapılandırma sırasında belirttiğiniz iletiyi gönderen Kımlığı değerini temel alan çakışma giderilene: en yüksek kimlik sahip düğümdeki kaynaklandığı satır çakışmayı kazanır. Daha fazla bilgi için, bkz. İşlem yayınlar (SQL Server Management Studio'yu) için veri çakışmaları görüntüle.

    4. Çakışan satırları düzgün yakınsadı emin olmak için doğrulama çalıştırın. Daha fazla bilgi için, bkz. Çoğaltılmış verileri doğrulama.

      [!NOT]

      Bu adımdan sonra verileri tutarsız durumda, en yüksek önceliğe sahip düğümü satırları el ile güncelleştirme ve değişiklikleri bu düğümden yayılmasına izin verin. Yoksa topolojisindeki değişiklikleri çelişen başka tüm düğümler için tutarlı bir duruma getirilir.

    5. Yürütme vesp_changepublication: belirtmek 'p2p_continue_onconflict'için @propertyparametre ve falseiçin @valueparametresi.

Ayrıca bkz.

Kavramlar

Eşler arası işlem çoğaltma