UPDATE deyimiyle DELETE/ıNSERT çiftleri yinelenmiş

Makale çevirileri Makale çevirileri
Makale numarası: 238254 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Benzersiz kısıtlama bir parçası olan herhangi bir sütun güncelleştirildi ve SQL Server, "bir çift DELETE başka bir deyişle ertelenen güncelleştirme olarak", güncelleştirmeyi uygular, / INSERT işlemi. Bu "ertelenen güncelleştirme" neden olur, bir çift DELETE göndermek çoğaltma / INSERT deyimleri abonelerin için. Ertelenen bir güncelleştirmenin neden olabilecek diğer durumlar da vardır. Bu nedenle, abone en özel saklı yordamlarda veya UPDATE tetikleyicisi uygulayan herhangi bir iş mantığı da DELETE de dahil edileceğini / INSERT Tetikleyicileri veya özel saklı yordamlarda.

Daha fazla bilgi

Işlem çoğaltması'de varsayılan davranışı abonelerin sırasında değişiklikleri uygulamak için INSERT, UPDATE ve DELETE özel saklı yordamlarda kullanmaktır.

INSERT deyimleri, Yayımcı tarafında yapılan aboneleri bir INSERT depolanmış yordam çağrısı yoluyla uygulanır. Benzer şekilde, bir DELETE deyimini DELETE depolanmış yordam çağrısı uygulanır.

Ancak, yordam çağrısı olarak bir"Ertelenmiş", bir çift DELETE logreader Aracısı yerlerde bir UPDATE deyimi gerçekleştirildiğinde / uygulanmış bir güncelleştirmenin yerine abonelerin distribution veritabanında depolanan INSERT yordamı çağırır depolanır. Örneğin, bu üç sütun ile TABLE1, adlı bir yayımlama, tablonuz varsayalım:
  • col1 int
  • col2 int
  • col3 varchar(30).
Yalnızca benzersiz kısıtlamayı TABLE1 üzerindeki bir birincil anahtar kısıtlaması yoluyla col1 tanımlanan. Bir kayıt olduğunu varsayar (1,1, ' Dallas').

Bu kod çalıştırdığınızda:
UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'
				
bir çift DELETEUPDATE deyiminin SQL Server tarafından uygulanan / INSERT deyimleri, bu yana, benzersiz bir dizin tanımlı olan col1 güncelleştirdiğiniz. Bu nedenle, the logreader bir çift DELETE yerleştirir. / INSERT, dağıtım veritabanında arar. Bu Tetikleyicileri veya abone en özel saklı yordamlarda var olan tüm iş mantığı etkileyebilir. DELETE ve INSERT Tetikleyicileri veya bu durumu işlemek için saklı yordamlar ek iş mantığı eklemek.

Tek mantık kullanmayı tercih ettiğiniz ve DELETE olarak çoğaltılan tüm UPDATE komutlarınızı istediğiniz / INSERT çiftleri, bu Microsoft Bilgi Bankası makalesinde açıklandığı gibi bir izleme bayrağı etkinleştirebilirsiniz:
160181INF: DELETE/ıNSERT çifti olarak UPDATE Replicate için izleme bayrağı
Ayrıca, yayınınızın yatay bir süzgeç kullanıyorsanız, güncelleştirilmiş satır bir filtre koşulu karşılamıyorsa, yalnızca bir DELETE yordam çağrısı abonelere gönderilir. Filtre koşulu karşılayan ancak koşulunu güncelleştirmesinden sonra daha önce güncelleştirilmiş satır, yalnızca INSERT yordam çağrısı, çoğaltma işlemi gönderilir.

Yukarıdaki örnekte, aynı zamanda TABLE1 üzerinde tanımlı yatay bir süzgeç bulunduğunu varsayalım: Burada col2 'Dallas' =. Bu kod yürütmesine,:
UPDATE table1 set col2 = 'New York' where col1 = 3
				
bu yana, güncelleştirilmiş satır yatay süzgeç ölçütlerini karşılamıyor abonelere uygulanacak yordam çağrısı depolanmış olan bir DELETE logreader aracı yalnızca yerleştirir.

Bu kod çalıştırmak için şimdi,:
UPDATE table1 set col2 = 'Dallas' where col1 = 3
				
satır daha önce Filtre koşulu karşılayan değil çünkü INSERT depolanmış yordam çağrısı, yalnızca logreader oluşturur.

Yalnızca uygun komutları, bir UPDATE işlemi, Yayımcı tarafında yapıldı, ancak Abone tarafında uygulanır.

Referanslar

SQL Server 2000 Service Pack 1 veya sonrası, Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
302341BILGI: İşlem çoğaltma Singleton Güncelleştirmesi'ni etkinleştirmek için yeni izleme bayrağı

Özellikler

Makale numarası: 238254 - Last Review: 12 Mayıs 2008 Pazartesi - Gözden geçirme: 6.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
Anahtar Kelimeler: 
kbmt kbinfo KB238254 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:238254

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com