Pernyataan pembaruan mungkin direplikasi sebagai Hapus sisipkan pasang

Ringkasan

Jika kolom yang merupakan bagian dari batasan unik dimutakhirkan, maka SQL Server menerapkan pembaruan sebagai "pembaruan ditangguhkan", yang berarti sebagai sepasang Hapus/Masukkan operasi. Pembaruan"ditangguhkan" menyebabkan replikasi mengirim sepasang Hapus/Masukkan pernyataan untuk pelanggan. Juga ada situasi lain yang dapat menyebabkan pemutakhiran yang tertunda. Oleh karena itu, logika bisnis apa pun yang Anda menerapkan pembaruan memicu atau kustom prosedur yang tersimpan di pelanggan harus juga termasuk dalam menghapus/Masukkan memicu atau kustom disimpan prosedur.

Informasi lebih lanjut

Perilaku default pada replikasi transaksional adalah dengan menggunakan
Menyisipkan, pembaruan dan menghapus kustom disimpan prosedur untuk menerapkan perubahan pada pelanggan.

Masukkan pernyataan yang dibuat di Publisher diterapkan untuk pelanggan melalui panggilan prosedur Masukkan disimpan. Demikian pula, Hapus pernyataan diterapkan melalui panggilan prosedur Hapus tersimpan.

Namun, saat memperbarui pernyataan dijalankan sebagai "pemutakhiran yang tertunda", agen logreader tempat sepasang Hapus/ panggilanMasukkan disimpan prosedur dalam database distribusi diterapkan ke pelanggan daripada pemutakhiran yang disimpan panggilan prosedur. Misalnya, Anda memiliki tabel penerbitan, bernama TABLE1, dengan tiga kolom berikut ini:

  • col1 int

  • col2 int

  • col3 varchar(30).

Batasan hanya unik pada TABLE1 ditetapkan pada col1 melalui batasan kunci primer. Misalnya Anda memiliki satu catatan (sekitar 1,1,'Dallas ').

Ketika Anda menjalankan kode ini:

UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'

Pernyataan PEMUTAKHIRAN diterapkan dengan SQL Server sebagai sepasang Hapus/Masukkan pernyataan sejak Anda memperbarui col1, yang memiliki indeks unik yang ditetapkan. Dengan demikian, logreader tempat sepasang Hapus/Masukkan panggilan dalam Pangkalan data distribusi. Hal ini dapat mempengaruhi logika bisnis yang ada di memicu atau kustom prosedur yang tersimpan di pelanggan. Anda harus memasukkan logika bisnis tambahan memicu menghapus dan memasukkan atau disimpan prosedur untuk menangani situasi ini.

Jika Anda lebih suka menggunakan logika tunggal dan Anda ingin semua perintah UPDATE Anda direplikasi sebagai Hapus/ pasangMasukkan , Anda dapat mengaktifkan bendera pelacakan seperti yang dijelaskan di artikel Pangkalan Pengetahuan Microsoft:

160181 INF: bendera untuk mereplikasi UPDATE sebagai pasangan DELETE sisipkan pelacakan
Selain itu, jika Anda menggunakan horizontal filter di publikasi Anda dan diperbarui baris tidak memenuhi syarat filter, hanya menghapus panggilan prosedur dikirimkan kepada pelanggan. Jika baris diperbarui sebelumnya tidak memenuhi syarat filter tetapi memenuhi syarat setelah pemutakhiran, hanya memasukkan panggilan prosedur dikirim melalui proses replikasi.


Dalam contoh sebelumnya, menganggap bahwa Anda juga memiliki filter horizontal yang ditetapkan pada TABLE1: mana col2 = 'Dallas'. Jika Anda menjalankan kode ini:

UPDATE table1 set col2 = 'New York' where col1 = 3

agen logreader hanya tempat menghapus disimpan panggilan prosedur yang diterapkan untuk pelanggan sejak diperbarui baris tidak memenuhi kriteria horizontal filter.

Sekarang, jika Anda menjalankan kode ini:

UPDATE table1 set col2 = 'Dallas' where col1 = 3

logreader menghasilkan hanya Masukkan disimpan panggilan prosedur, karena baris sebelumnya tidak memenuhi syarat filter.

Meskipun operasi UPDATE yang dilakukan di Publisher, perintah yang sesuai yang diterapkan di pelanggan.

Referensi

Untuk SQL Server 2000 Paket Layanan 1, atau yang lebih baru, lihat artikel di Pangkalan Pengetahuan Microsoft:

302341 INF: baru bendera pelacakan untuk mengaktifkan pembaruan tunggal untuk replikasi transaksional

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×