Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

UPDATE deyimiyle DELETE/ıNSERT çiftleri yinelenmiş

Ö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
Ö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ğı

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 238254 - Son İnceleme: 05/12/2008 18:01:45 - Düzeltme: 6.2

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

  • kbmt kbinfo KB238254 KbMttr
Geri bildirim