Aracılığıyla paylaş


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

Not

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Işlem çoğaltması aboneleri güncelleştirme güncelleştirilebilir abonelikler ve eşler arası çoğaltma yoluyla destekler.Iki tür güncelleştirilebilir abonelikler şunlardır:

  • Hemen güncelleştiriliyor.Abone verileri güncelleştirmek için yayımcı ve abone bağlı olmalıdır.

  • Kuyruğa Alınmış Güncelleştirme The Yayımcı ve abone abone verileri güncelleştirmek için bağlı olmanız gerekmez.Güncelleştirme sırasında abone yapılabilir veya Yayımcı çevrimdışı.

Verileri bir Abone tarafında güncelleştirildi, onu ilk yayılır Yayımcı ve sonra da diğer abonelerine bulaşan.Hemen güncelleştirmek için kullanılan, değişiklikler hemen iki aşamalı yürütme protokol kullanılarak yayılır.Kuyruğa Alınmış Güncelleştirme kullanılırsa, değişiklikleri bir sırada depolanan; bu ağ bağlantısı kullanılabilir olduğunda sıraya alınmış hareketleri sonra zaman uyumsuz olarak Yayımcı tarafında uygulanır.Güncelleştirmelerin, zaman uyumsuz olarak yayımcıya yayılır, aynı verileri yayımcı veya başka bir abone olarak güncelleştirilmiş olabilir ve güncelleştirmelerin uygularken çakışmaları ortaya çıkabilir.Çakışmaları algıladı ve yayın oluştururken, küme bir çakışma çözümleme ilkesine göre çözümlendi.

Yeni Yayın sihirbazını güncelleştirilebilir üyeliklere hareketsel bir yayın oluşturursanız, hem anlık güncelleştirme hem de kuyruğa alınmış güncelleştirme etkinleştirilir.Saklı yordamlar bir yayın oluşturursanız, bir veya iki seçeneği de etkinleştirebilirsiniz.Yayın için bir abonelik oluşturduğunuzda, hangi güncelleştirme modu belirtin.Ardından, gerekirse, güncelleştirmenin modları arasında geçiş yapabilirsiniz.Daha fazla bilgi için aşağıdaki "Değiştirme arasındaki güncelleştirme modu" bölümüne bakın.

Işlem yayınlar için güncelleştirilebilir abonelikler etkinleştirmek için

Işlem yayınlar için güncelleştirilebilir bir abonelik oluşturmak için

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

Güncelleştirilebilir abonelikler kullanırken, bir abonelik bir güncelleştirme modu kullanın ve sonra diğer uygulamayı gerektiriyorsa geçiş belirtebilirsiniz.Örneğin, bir abonelik hemen güncelleştirme kullanmanız gerekir, ancak bir sistem hatası, ağ bağlantısı kaybı ile sonuçlanırsa anahtarına güncelleştirme sıraya belirtebilirsiniz.

Not

Çoğaltma otomatik olarak güncelleştirme modlar arasında geçiş değil.Gereken küme aracılığıyla güncelleştirme modu SQL Server Management Studio veya uygulamanız gerekir sp_setreplfailovermode (Transact-SQL) Modlar arasında geçiş yapmak için .

Anlık güncelleştirme sıraya için güncelleştirmesini geçerseniz, geri hemen abone ve Yayımcı bağlanır ve sıra Okuma Aracısı sıradaki tüm bekletilen iletileri yayımcıya uygulanan dek güncelleştirme için geçiş yapılamıyor.

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

Modları güncelleştirme arasında geçiş yapmak için , yayın etkinleştirin ve her ikisi için abonelik modları güncelleştirmek ve aralarında gerekirse geçiş.

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

Genel konuları

  • Updating subscriptions are supported for Subscribers running Microsoft SQL Server 2000 SP3 and later versions.

  • Devre abonelikler veya kuyruğa alınmış güncelleştirme aboneliği güncelleştirmek için bir yayın etkinleştirildikten sonra (abonelikler kullanmaya gerek yoktur, ancak) seçeneği için yayın dışı bırakılamıyor.yayın seçeneği devre dışı bırakmak için , silinmeli ve yeni oluşturulmuş.

  • Verileri yeniden yayımlama desteklenmiyor.

  • Çoğaltma ekler msrepl_tran_version sütun için izleme amacıyla yayımlanmış tablolara.Bu ek sütun nedeniyle tüm INSERT deyimleri bir sütun içermelidir.

  • Şema değişiklikleri yapmak bir tablo destekleyen bir yayında, abonelikler, tüm etkinliklerin üzerinde güncelleştirme tablo yayımcı ve aboneleri ve bekleyen değişiklikleri tüm düğümlere şema değişiklikleri yapmadan önce dağıtılmasını gereken veri durdurulmalı.Bu, bekleyen hareketler bekleyen şema değişikliği ile çakışmamasını sağlar.Sonra şema değişiklikleri tüm düğümlere bulaşan, aktiviteyi yayımlanmış tabloları üzerinde devam edebilirsiniz.Daha fazla bilgi için bkz: Nasıl Yapılır: Quiesce bir çoğaltma topolojisi (çoğaltma Transact-SQL programlama).

  • Güncelleştirme modları arasında geçiş yapmak düşünüyorsanız, aboneliğin (varsayılan olarak, sürekli sıra Okuma Aracısı çalışır) başlatıldı sonra sıra Okuma Aracısı en az bir kez çalıştırmalısınız.

  • abone veritabanı yatay bölümlendirilir ve abone ancak değil konumunda satır bölümündeki Yayımcı, abone hazır satırları güncelleştirilemiyor.Bu satırlar güncelleştirmeye çalışırken bir hata döndürür.Gelen satırları silinmelidir tablo ve sonra da yayımcı tarafına eklendi.

Abone güncelleştirme

  • Abone güncelleştirme için yayılır Yayımcı bile, bir abonelik süresi dolmuş veya etkin değil.Bu tür bir abonelik ya bırakılan yeniden veya emin olun.

  • TIMESTAMP veya IDENTITY sütunu olarak kullanılır ve kendi temel veri türü olarak çoğaltılan, bu sütunların değerleri Abone tarafında güncellenmelidir değil.

  • Abonelerin güncelleştirme veya ekleme metin, ntext or Görüntü değerleri, eklenmiş veya silinmiş tablolar içinde çoğaltma değişiklik izleme Tetikleyicileri okumak mümkün olmadığı için.Benzer şekilde, aboneleri güncelleştirme eklemek veya text veya image verileri bir yayımcı tarafından yazılır çünkü WRITETEXT veya UPDATETEXT kullanarak değerleri. Bunun yerine, bölüm metin and Görüntü sütunlara ayrı bir tablo ve bir işlem içinde iki tablo olarak değiştirin.

    Bir abone en büyük nesneleri güncelleştirmek için , veri türleri Ek Yardım düğmesini kullanın. varchar(max), nvarchar(max), varbinary(max) yerinemetin, ntext, and Görüntü veri, sırasıyla türleri.

  • Benzersiz anahtarlardaki (birincil anahtarlar dahil) yineleme üreten (örneğin, UPDATE <sütun> SET <sütun> =<sütun>+1 biçimindeki bir güncelleştirme) güncelleştirmelere izin verilmez ve benzersizlik ihlali nedeniyle bunlar reddedilir.Bunun nedeni, Abonede yapılan küme güncelleştirmelerinin etkilenen her satır için ayrı UPDATE deyimleri olarak çoğaltma yoluyla yayılmasıdır.

  • abone veritabanı yatay bölümlendirilir ve abone ancak değil konumunda bulunan satır bölümündeki Yayımcı, abone önceden varolan satırları güncelleştirilemiyor.Bu satırlar güncelleştirmeye çalışırken bir hata döndürür.Satırları tablodan silinen ve yeniden eklenmiş gerekir.

Kullanıcı tanımlı Tetikleyicileri

  • Uygulama sırasında abone Tetikleyicileri gerektiriyorsa, tetikleyiciler, yayımcı ve abonelik IÇIN NOT çoğaltma tasarrufunda ile tanımlanmalıdır.Bu seçenek hakkında daha fazla bilgi için bkz: Sınırlamaları, kimlik ve Tetikleyicileri NOT ile denetlemek IÇIN çoğaltma. Bu, yalnızca özgün veri değişikliği Tetikleyicileri harekete ancak değil, değiştirdiğinizde çoğaltılacağı sağlar.

  • Kullanıcı tanımlı tetikleyicisi çoğaltma tetikleyicisi tablo güncelleştirdiğinde başlatılmıyor emin olun.Bu yordamı çağıran gerçekleştirilir sp_check_for_sync_trigger gövde metninde, kullanıcı tanımlı tetikleyicisi.Daha fazla bilgi için bkz: sp_check_for_sync_trigger (Transact-SQL).

Hemen güncelleştiriliyor

  • Hemen güncelleştirme abonelikler için abone konumundaki değişiklikler yayılır Yayımcı ve Microsoft dağıtılmış işlem Coordinator (MS DTC) kullanılarak uygulanır.MS DTC yüklenir ve yapılandırılır. yayımcı ve abone olun.Daha fazla bilgi için Windows belgelerine bakın.

  • Tetikleyiciler tarafından hemen güncelleştirme abonelikler kullanılan yayımcı değişiklikleri çoğaltmak için bir bağlantı gerektirir.Bu bağlantının güvenliğini sağlama hakkında daha fazla bilgi için bkz: Abonelikleri güncelleştirmek için güvenlik konuları.

  • yayın hemen güncelleştirme abonelikler sağlar ve yayındaki bir makale sütuna bir süzgeç varsa, varsayılan olmadan NULL olmayan sütunlar dışında süzemezsiniz.

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

  • Tabloları birleştirme yayınına dahil, abonelikler güncelleştirme izin veren bir işlem yayın parçası kuyruğa atılmış olarak da yayımlanamaz.

  • Tüm sorgular için birincil anahtar kaydı Konumlandırıcı kullanıldığından kullanarak güncelleştirme sıraya, birincil anahtar sütunları yapılan güncelleştirmeler önerilmez.Çakışma çözümleme ilkesi abone WINS için ayarlandığında, birincil anahtarlar güncelleştirmeleri dikkatli yapılmalıdır.Birincil anahtar güncelleştirmeleri hem yayıncı ve abone yapılırsa, sonucu ile farklı bir birincil anahtar olarak iki satır olacaktır.

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

    • BIGINT, DECIMAL, NUMERIC, MONEY, ve SMALLMONEY eşlenir NUMERIC.

    • BINARY ve VARBINARY eşlenir VARBINARY veri.

çakışma algılama ve Çözümlemesi

  • Abone WINS, ilke çakışıyor: çelişki çözümü, birincil anahtar sütunlarını güncelleştirmelerini desteklenmiyor.

  • Yabancı anahtar kısıtlamasını hataları çakışmaları nedeniyle çoğaltma tarafından giderilen:

    • Çakışmaları beklenen ve verileri de bölümlendirilir (aboneleri, aynı satır güncelleştirmeyin), yayımcı ve aboneleri, yabancı anahtar kısıtlamalarını kullanabilirsiniz.

    • Beklenen Çakışmalar varsa: "Abone wins" çelişki çözümü kullanıyorsanız, yabancı anahtar kısıtlamalarını yayımcının veya abone kullanmamalısınız; "Yayımcı wins" çelişki çözümü kullanıyorsanız, yabancı anahtar kısıtlamaları Abone tarafında kullanmamalısınız.