Konflik Replikasi Gabungan Tingkat Lanjut - Penyelesaian dalam Catatan Logis

Berlaku untuk:SQL Server

Topik ini mencakup berbagai kombinasi deteksi konflik dan pendekatan resolusi konflik yang dimungkinkan saat menggunakan catatan logis. Konflik dalam replikasi penggabungan terjadi ketika lebih dari satu simpul mengubah data yang sama, atau replikasi penggabungan mengalami jenis kesalahan tertentu, seperti pelanggaran batasan, saat mereplikasi perubahan. Untuk informasi selengkapnya tentang deteksi dan resolusi konflik, lihat Deteksi dan Resolusi Konflik Replikasi Gabungan Tingkat Lanjut.

Untuk menentukan pelacakan konflik dan tingkat resolusi untuk artikel, lihat Mengubah opsi Replikasi Penggabungan.

Deteksi Konflik

Cara di mana konflik terdeteksi untuk rekaman logis ditentukan oleh dua properti artikel: column_tracking dan logical_record_level_conflict_detection. SQL Server 2005 (9.x) dan versi yang lebih baru juga mendukung deteksi tingkat rekaman logis.

Properti artikel logical_record_level_conflict_detection dapat diatur ke TRUE atau FALSE. Nilai hanya boleh diatur untuk artikel induk tingkat atas dan akan diabaikan oleh artikel turunan. Jika nilai ini FALSE, replikasi penggabungan mendeteksi konflik seperti pada versi SQL Server sebelumnya, hanya berdasarkan nilai properti column_tracking untuk artikel. Jika nilai ini TRUE, replikasi penggabungan akan mengabaikan properti column_tracking artikel, dan mendeteksi konflik jika perubahan dilakukan di mana saja dalam catatan logis. Misalnya, pertimbangkan skenario ini:

Three table logical record with values

Konflik terdeteksi jika dua pengguna mengubah nilai apa pun untuk catatan logis Pelanggan2 dalam tabel Pelanggan, Pesanan, atau OrderItems . Contoh ini melibatkan perubahan yang dibuat melalui pernyataan UPDATE, tetapi konflik juga dapat dideteksi oleh perubahan yang dibuat dengan pernyataan INSERT atau DELETE.

Resolusi Konflik

Secara default, replikasi penggabungan menggunakan logika berbasis prioritas untuk mengatasi konflik. Jika perubahan yang bertentangan dilakukan dalam dua database Pelanggan, perubahan untuk Pelanggan dengan prioritas langganan yang lebih tinggi menang, atau jika prioritasnya sama, perubahan pertama untuk mencapai kemenangan Penerbit. Dengan deteksi tingkat baris dan tingkat kolom, seluruh baris yang menang selalu menimpa baris yang kalah.

Properti artikel logical_record_level_conflict_resolution dapat diatur ke TRUE atau FALSE. Nilai hanya boleh diatur untuk artikel induk tingkat atas dan akan diabaikan oleh artikel turunan. Jika nilainya TRUE, seluruh rekaman logis yang menang menimpa rekaman logis yang kalah. Jika FALSE, baris kemenangan individual dapat berasal dari Pelanggan atau Penerbit yang berbeda. Misalnya, Pelanggan A dapat memenangkan konflik pada baris dari tabel Pesanan , dan Pelanggan B dapat menang pada baris terkait dari tabel OrderItems . Hasilnya adalah catatan logis dengan baris Pesanan dari Pelanggan A dan baris OrderItems dari Pelanggan B.

Interaksi resolusi konflik dan deteksi Pengaturan

Hasil konflik tergantung pada interaksi deteksi konflik dan pengaturan resolusi. Untuk contoh di bawah ini, diasumsikan bahwa resolusi konflik berbasis prioritas sedang digunakan. Saat menggunakan rekaman logis, kemungkinannya adalah:

  • Deteksi tingkat baris atau kolom, resolusi tingkat baris

  • Deteksi tingkat kolom, resolusi rekaman logis

  • Deteksi tingkat baris, resolusi rekaman logis

  • Deteksi rekaman logis, resolusi rekaman logis

Deteksi Tingkat Baris atau Kolom, Resolusi Tingkat Baris

Dalam contoh ini, publikasi dikonfigurasi dengan:

  • column_tracking TRUE atau FALSE

  • logical_record_level_conflict_detection FALSE

  • logical_record_level_conflict_resolution FALSE

Dalam hal ini, deteksi berada di tingkat baris atau kolom dan resolusi berada di tingkat baris. Pengaturan ini digunakan untuk memanfaatkan semua perubahan pada rekaman logis yang direplikasi sebagai unit, tetapi tanpa deteksi konflik atau resolusi pada tingkat catatan logis.

Deteksi Tingkat Kolom, Resolusi Rekaman Logis

Dalam contoh ini, publikasi dikonfigurasi dengan:

  • column_tracking TRUE

  • logical_record_level_conflict_detection FALSE

  • logical_record_level_conflict_resolution TRUE

Penerbit dan Pelanggan dimulai dengan himpunan data yang sama, dan catatan logis ditentukan antara tabel pesanan dan pelanggan . Publisher mengubah kolom custcol1 dalam tabel pelanggan dan ordercol1 dalam tabel pesanan . Pelanggan mengubah custcol1 di baris tabel pelanggan yang sama dan kolom ordercol2 di baris tabel pesanan yang sama. Perubahan pada kolom yang sama dalam tabel pelanggan mengakibatkan konflik, tetapi perubahan pada tabel pesanan tidak berkonflik.

Karena konflik diselesaikan pada tingkat catatan logis, perubahan yang menang yang dilakukan di Penerbit menggantikan perubahan yang dibuat dalam tabel Pelanggan selama pemrosesan replikasi.

First series of tables showing changes to related rows.

Deteksi Tingkat Baris, Resolusi Rekaman Logis

Dalam contoh ini, publikasi dikonfigurasi dengan:

  • column_tracking FALSE

  • logical_record_level_conflict_detection FALSE

  • logical_record_level_conflict_resolution TRUE

Penerbit dan Pelanggan dimulai dengan himpunan data yang sama. Publisher mengubah kolom custcol1 di tabel pelanggan . Pelanggan mengubah custcol2 di tabel pelanggan dan kolom ordercol2 dalam tabel pesanan. Perubahan pada baris yang sama dalam tabel pelanggan mengakibatkan konflik, tetapi Pelanggan berubah ke tabel pesanan tidak bertentangan.

Karena konflik diselesaikan pada tingkat catatan logis, selama sinkronisasi perubahan yang menang yang dilakukan di Penerbit menggantikan perubahan yang dibuat dalam tabel Pelanggan.

Second series of tables showing changes to related rows.

Deteksi Rekaman Logis, Resolusi Rekaman Logis

Dalam contoh ini, publikasi dikonfigurasi dengan:

  • logical_record_level_conflict_detection TRUE

  • logical_record_level_conflict_resolution TRUE

Penerbit dan Pelanggan dimulai dengan himpunan data yang sama. Publisher mengubah kolom custcol1 di tabel pelanggan . Pelanggan mengubah kolom ordercol1 dalam tabel pesanan . Tidak ada perubahan pada baris atau kolom yang sama, tetapi karena perubahan dilakukan dalam catatan logis yang sama untuk custid=1, perubahan terdeteksi sebagai konflik di tingkat catatan logis.

Karena konflik juga diselesaikan pada tingkat catatan logis, selama sinkronisasi perubahan yang menang yang dilakukan di Penerbit menggantikan perubahan yang dilakukan dalam tabel Pelanggan.

Third series of tables showing changes to related rows.

Lihat Juga

Perubahan Grup pada Baris Terkait dengan Rekaman Logis