Işlem çoğaltma için güncelleştirilebilir abonelikleri

[!NOT]

Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.

Işlem çoğaltma güncelleştirmelerinin aboneleri güncelleştirilebilir abonelikleri ve peer-to-peer çoğaltma yoluyla destekler. Güncelleştirilebilir abonelikleri iki tür şunlardır:

  • Hemen güncelleştiriliyor. Publisher ve abone abone veri güncelleştirmek için bağlı olmanız gerekir.

  • Kuyruğa alınmış güncelleştirme Publisher ve abone abone veri güncelleştirmek için bağlı olmanız gerekmez. Abone güncellemeleri yapılabilir veya yayımcı çevrimdışı.

Abone tarafında veri güncelleştirildiğinde, bu ilk için yayımcı yayılır ve diğer aboneleri yayılır. Anında güncelleme kullanılırsa, değişiklikler hemen iki evreli tamamlama iletişim kuralı kullanılarak yayılır. Kuyruğa alınmış güncelleştirme kullanılırsa, değişiklikleri bir kuyrukta saklanır; ağ bağlantısı kullanılabilir olduğunda kuyruğa alınmış hareketleri sonra yayımcı zaman uyumsuz olarak uygulanır. Güncellemeler asenkron için yayımcı yayılır, aynı verileri başka bir abone veya Publisher tarafından güncelleştirilmiş olabilir ve güncelleştirmeler uygulandığında çakışmaları oluşabilir. Çakışma algılandı ve yayını oluştururken ayarlanmış bir çakışma çözümleme ilkesi göre çözülmüş.

Yeni yayın sihirbazını güncelleştirilebilir abonelikleri ile işlem bir yayın oluşturursanız, hem anında güncelleme ve kuyruğa alınmış güncelleştirme etkinleştirilir. Saklı yordamlar ile bir yayın oluşturursanız, bir veya iki seçeneği etkinleştirebilirsiniz. Yayını abonelik oluşturduğunuzda, hangi güncelleştirme modu belirtin. Ardından, gerekirse güncelleştirme modları arasında geçiş yapabilirsiniz. Daha fazla bilgi için bkz: aşağıdaki bölümde "Update modları arasında geçiş yapma".

Işlem yayınlar için güncelleştirilebilir abonelikleri etkinleştirmek için Işlem yayınlar için güncelleştirme abonelikleri etkinleştirmek.

Işlem yayınlar için güncelleştirilebilir abonelikleri oluşturmak için bkz: İşlem yayınına güncelleştirilebilir bir abonelik oluştur.

Güncelleştirme modları arasında geçiş yapma

Güncelleştirilebilir abonelikleri kullanma abonelik bir güncelleştirme modunu kullanmanız ve uygulamayı gerektiriyorsa, diğer geçiş belirtebilirsiniz. Örneğin, bir abonelik hemen güncelleştirme kullanmanız gerekir, ancak sistem hatası ağ bağlantısı kaybına sonuçlanırsa anahtarı güncelleştirme sıraya alındı belirtebilirsiniz.

[!NOT]

Çoğaltma otomatik olarak güncelleştirme modları arasında geçiş değil. Aracılığıyla güncelleştirme modunu ayarlamak gerekir SQL Server Management Studioveya uygulamanız gerekir sp_setreplfailovermode (Transact-sql)modları arasında geçiş yapmak için.

Hemen kuyruğa alınmış güncelleştirme güncelleştirmelerini geçerseniz, geri hemen abone ve Publisher bağlı ve sıra Okuyucu Aracısı yayımcı sıradaki tüm bekletilen iletileri uygulanmış kadar güncelleştirmek için geçiş yapamazsınız.

Güncelleştirme modları arasında geçiş yapmak için

Güncelleştirme modları arasında geçiş yapmak için yayını etkinleştirmek ve her ikisi için abonelik modları güncelleştirmek ve aralarında gerekirse geçin. Daha fazla bilgi için, bkz. Updatable işlemsel abonelik için Güncelleştirme modları arasında geçiş yapma.

Güncelleştirilebilir abonelikleri kullanma hakkında önemli noktalar

Genel hususlar

  • Yayını abonelikleri veya kuyruğa alınmış güncelleştirme abonelikleri güncelleştirmek için etkin sonra seçeneği olmasına rağmen (abonelikleri kullanmak gerekmez) yayın için devreden olamaz. Seçeneği devre dışı bırakmak için yayını silmek gerekir ve yeni bir oluşturdu.

  • Verileri yeniden yayınlama desteklenmiyor.

  • Çoğaltma ekler msrepl_tran_version izleme amacıyla yayımlanan tablolarda sütun. Çünkü bu ek sütun, tüm INSERT deyimleri sütun içermelidir.

  • Güncelleştirme abonelikleri destekleyen bir yayın bir tablo şema değişiklikleri için tablodaki tüm etkinlik Publisher ve aboneleri durdurulmalı ve veri değişiklikleri tüm düğümlere şema değişiklikleri yapmadan önce yayılması gerekir. Bu olağanüstü hareketler bekleyen şema değişikliği ile çakışmamasını sağlar. Şema değişiklikleri tüm düğümlere yayılır sonra etkinlik yayımlanmış tabloları üzerinde devam edebilirsiniz. Daha fazla bilgi için, bkz. Quiesce çoğaltma topolojisini (çoğaltma Transact-sql programlama).

  • Güncelleştirme modları arasında geçiş yapmak planlıyorsanız, abonelik (varsayılan olarak, sürekli sıra Okuyucu Aracısı çalıştırır) başlatıldıktan sonra sıra Okuyucu Aracısı en az bir kez çalıştırmanız gerekir.

  • Abone, abone veritabanı yatay olarak bölümlenmiş ve bölüme abone, ancak yayımcı varolan satır varsa, önceden varolan satırları güncelleştirilemiyor. Bu satırları güncelleştirmek çalışırken bir hata döndürür. Satırları tablodan silinmiş ve yayımcı eklendi.

Abone güncellemeleri

  • Bir abonelik süresi dolmuş ya da devre dışı güncelleştirme abone için yayımcı yayılır. Böyle bir abonelik bırakılan veya yeniden ya da emin olun.

  • Zaman damgası veya kimlik sütunu kullanılır ve onların temel veri türleri olarak çoğaltılır, bu sütunların değerleri Abone tarafında güncelleştirilmelidir değil.

  • Abonelerin güncelleştirme veya ekleme metin, ntext veya Resim eklenmiş veya silinmiş tablolar içinde çoğaltma değişiklik izleme Tetikleyicileri okumak mümkün olmadığından değerleri. Aboneler benzer şekilde, güncelleştirme veya ekleme textya imageveri yayımcı tarafından yazılır WRITETEXT veya updatetext kullanarak değer. Bunun yerine, bölüm metin ve Resim ayrı bir sütuna tablo ve bir işlem içinde iki tabloyu değiştirmek.

    Abone büyük nesneleri güncelleştirmek için veri türlerini kullanmak varchar(max), nvarchar(max), varbinary(max) yerine metin, ntext, ve Resim veri türleri, sırasıyla.

  • Güncellemeleri yinelemeler üretmek (birincil anahtarlar dahil) benzersiz anahtarlar için (örneğin, formun güncelleştirme güncelleştirmesini <column> set <column> =<column>+ 1 izin verilmez ve bir teklik ihlali nedeniyle reddedilir. Bunun nedeni bireysel güncelleştirme çoğaltma kümesi güncellemeleri Abone tarafında yapılan yayılır deyimleri etkilenen her satır için.

  • Abone, abone veritabanı yatay olarak bölümlenmiş ve bölüme abone ancak yayımcı varolan satır varsa, önceden varolan satırları güncelleştirilemiyor. Bu satırları güncelleştirmek çalışırken bir hata döndürür. Satırları tablodan silinir ve yeniden eklenir.

Kullanıcı tanımlı Tetikleyicileri

  • Uygulama, Tetikleyiciler abone isterse, Publisher ve abone not for REPLICATION seçeneğiyle Tetikleyiciler tanımlanmalıdır. Bu, yalnızca özgün veri değişikliği için Tetikleyiciler ateşlenmesine, ama ne zaman değiştirmek değil çoğaltılır sağlar.

  • Çoğaltma tetikleyicisi tabloya güncelleştirdiğinde kullanıcı tanımlı tetikleyici patlamaz emin olun. Bu yordamı çağrılarak yapılır sp_check_for_sync_trigger kullanıcı tanımlı tetikleyici gövdesi içinde. Daha fazla bilgi için, bkz. sp_check_for_sync_trigger (Transact-sql).

Hemen güncelleştiriliyor

  • Hemen güncelleştirme abonelikleri için abone adresindeki değişiklikler için yayımcı yayılır ve Microsoft Dağıtılmış İşlem Düzenleyicisi (ms dtc) kullanılarak uygulanır. ms dtc yüklü ve Publisher ve abone yapılandırıldığından emin olun. Daha fazla bilgi için Windows belgelerine bakın.

  • Hemen güncelleştirme abonelikleri tarafından kullanılan tetikler değişiklikleri çoğaltmak için yayımcı bağlantı gerektirir.

  • Hemen güncelleştirme abonelikleri yayını sağlar ve yayını bir makale sütun filtresi varsa dışarı olmadan varsayılan NULL olmayan-olabilecek sütunları süzemezsiniz.

Güncelleştirme sıraya alındı

  • Bir birleştirme yayını dahil tabloları da işlem yayınına izin veren bir parçası abonelikleri güncelleştirme sıraya olarak yayımlanamaz.

  • Birincil anahtar kaydı bir belirleyicisi tüm sorgular için kullanıldığından kullanarak güncelleştirme sıraya alındı durumlarda birincil anahtar sütunları için yapılan güncelleştirmeler önerilmez. Çakışma çözümleme ilkesi abone WINS için ayarlandığında, birincil anahtarlar güncellemeleri dikkatli yapılmalıdır. Güncelleştirmeler için birincil anahtar her iki yayıncı ve abone yapılırsa, sonuç farklı birincil anahtarları ile iki satır olacaktır.

  • Veri sütunlarını SQL_VARIANT yazın: Abone tarafında veri eklendiğinde veya güncelleştirildiğinde, sıraya abone kopyalandığında bu şu şekilde sıra Okuyucu Aracısı tarafından eşleştirilir:

    • BIGINT, DECIMAL, NUMERIC, MONEY, and SMALLMONEY are mapped to NUMERIC.

    • BINARYve VARBINARYeşlenir VARBINARYveri.

Çakışma algılaması ve Çözümlemesi

  • Abone WINS için çatışma politikası: çakışma çözünürlüğü için birincil anahtar sütunlarını güncelleştirmeleri desteklenmiyor.

  • Çakışmaları yabancı anahtar kısıtlaması hataları nedeniyle çoğaltma tarafından çözülmüş değil:

    • Çakışmaları beklendiği ve veri bölümlenmiş de (aboneleri değil güncelleştirmek aynı satır), Publisher ve aboneleri yabancı anahtar kısıtlamalarını kullanabilirsiniz.

    • Eğer çatışmalar bekleniyor: "Abone wins" kullanırsanız, yabancı anahtar kısıtlamalarını yayımcı veya abone kullanmalısınız değil çakışma çözümleme; "Publisher wins" kullanırsanız, yabancı anahtar kısıtlamaları Abone tarafında kullanmamalısınız çakışma çözünürlüğü.

Ayrıca bkz.

Kavramlar

Kuyruğa alınmış güncelleştirme çakışma algılaması ve Çözümlemesi

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

Işlem çoğaltma için yayın türleri

Verileri ve veritabanı nesnelerini Yayımla

Yayınlara abone