Replikasi Gabungan Tingkat Lanjut - Deteksi dan Resolusi Konflik
Berlaku untuk: SQL Server
Ketika Penerbit dan Pelanggan tersambung dan sinkronisasi terjadi, Agen Penggabungan mendeteksi apakah ada konflik. Jika konflik terdeteksi, Agen Penggabungan menggunakan pemecah masalah konflik (yang ditentukan ketika artikel ditambahkan ke publikasi) untuk menentukan data mana yang diterima dan disebarkan ke situs lain.
Replikasi penggabungan menawarkan berbagai metode untuk mendeteksi dan mengatasi konflik. Untuk sebagian besar aplikasi, metode defaultnya sesuai:
- Jika konflik terjadi antara Penerbit dan Pelanggan, perubahan Penerbit disimpan dan perubahan Pelanggan dibuang.
- Jika konflik terjadi antara dua Pelanggan yang menggunakan langganan klien (jenis default untuk langganan penarikan), perubahan dari Pelanggan pertama yang akan disinkronkan dengan Penerbit disimpan, dan perubahan dari Pelanggan kedua dibuang. Untuk informasi tentang menentukan langganan klien dan server, lihat Menentukan Tipe Langganan Penggabungan dan Prioritas Resolusi Konflik (SQL Server Management Studio).
- Jika konflik terjadi antara dua Pelanggan yang menggunakan langganan server (jenis default untuk langganan push), perubahan dari Pelanggan dengan nilai prioritas tertinggi disimpan, dan perubahan dari Pelanggan kedua dibuang. Jika nilai prioritas sama, perubahan dari Pelanggan pertama untuk disinkronkan dengan Penerbit disimpan.
Catatan
Meskipun Pelanggan menyinkronkan dengan Penerbit, konflik biasanya terjadi di antara pembaruan yang dilakukan pada Pelanggan yang berbeda, alih-alih pembaruan dilakukan pada Pelanggan dan di Penerbit.
Perilaku deteksi konflik dan resolusi tergantung pada opsi berikut, yang dijelaskan dalam topik ini:
Apakah Anda menentukan pelacakan tingkat kolom, pelacakan tingkat baris, atau pelacakan tingkat rekaman logis.
Apakah Anda menentukan mekanisme resolusi berbasis prioritas default atau menentukan pemecah masalah artikel. Penyelesai artikel dapat berupa:
- Handler logika bisnis yang ditulis dalam kode terkelola.
- Pemecah masalah kustom berbasis COM.
- Resolver berbasis COM yang disediakan oleh Microsoft.
Jika mekanisme resolusi default digunakan, perilaku ditentukan lebih lanjut oleh jenis langganan yang digunakan: klien atau server.
Deteksi Konflik
Apakah perubahan data memenuhi syarat sebagai konflik atau tidak tergantung pada jenis pelacakan konflik yang Anda tetapkan untuk artikel:
- Jika Anda memilih pelacakan konflik tingkat kolom, itu dianggap sebagai konflik jika perubahan dilakukan pada kolom yang sama di baris yang sama di lebih dari satu simpul replikasi.
- Jika Anda memilih pelacakan tingkat baris, itu dianggap sebagai konflik jika perubahan dilakukan pada kolom apa pun di baris yang sama di lebih dari satu simpul replikasi (kolom yang terpengaruh di baris yang sesuai tidak perlu sama).
- Jika Anda memilih pelacakan tingkat rekaman logis, itu dianggap sebagai konflik jika perubahan dilakukan pada baris mana pun dalam catatan logis yang sama pada lebih dari satu simpul replikasi (kolom yang terpengaruh di baris terkait tidak perlu sama).
Untuk informasi selengkapnya, lihat Mendeteksi dan Mengatasi Konflik dalam Rekaman Logis.
Untuk menentukan tingkat pelacakan konflik dan resolusi untuk artikel, lihat Menentukan properti replikasi penggabungan.
Resolusi Konflik
Setelah konflik terdeteksi, Agen Penggabungan meluncurkan pemecah masalah konflik yang dipilih dan menggunakan pemecah masalah untuk menentukan pemenang konflik. Baris yang menang diterapkan di Penerbit dan Pelanggan, dan data dari baris yang kalah ditulis ke tabel konflik. Konflik diselesaikan segera setelah resolver dijalankan, kecuali Anda memilih untuk mengatasi konflik secara interaktif.
Mengatasi Konflik Replikasi Penggabungan
Berlaku untuk: SQL Server
Ketika Penerbit dan Pelanggan tersambung dan sinkronisasi terjadi, Agen Penggabungan mendeteksi apakah ada konflik. Jika konflik terdeteksi, Agen Penggabungan menggunakan pemecah masalah konflik untuk menentukan data mana yang akan diterima dan disebarluaskan ke situs lain.
Catatan
Meskipun Pelanggan menyinkronkan dengan Penerbit, konflik biasanya terjadi antara pembaruan yang dilakukan pada Pelanggan yang berbeda daripada pembaruan yang dibuat pada Pelanggan dan di Penerbit.
Replikasi penggabungan menawarkan berbagai metode untuk mendeteksi dan mengatasi konflik. Untuk sebagian besar aplikasi, metode defaultnya sesuai:
Jika konflik terjadi antara Penerbit dan Pelanggan, perubahan Penerbit disimpan dan perubahan Pelanggan dibuang.
Jika konflik terjadi antara dua Pelanggan yang menggunakan langganan klien (jenis default untuk langganan penarikan), perubahan dari Pelanggan pertama yang akan disinkronkan dengan Penerbit disimpan, dan perubahan dari Pelanggan kedua dibuang. Untuk informasi tentang menentukan langganan klien dan server, lihat Menentukan Tipe Langganan Penggabungan dan Prioritas Resolusi Konflik (SQL Server Management Studio).
Jika konflik terjadi antara dua Pelanggan yang menggunakan langganan server (jenis default untuk langganan push), perubahan dari Pelanggan dengan nilai prioritas tertinggi disimpan, dan perubahan dari Pelanggan kedua dibuang. Jika nilai prioritas sama, perubahan dari Pelanggan pertama untuk disinkronkan dengan Penerbit disimpan.
Untuk informasi selengkapnya tentang deteksi konflik dan resolusi untuk replikasi penggabungan, lihat Deteksi dan Resolusi Konflik Replikasi Gabungan Tingkat Lanjut.
Jenis Pemecah Masalah
Dalam replikasi penggabungan, resolusi konflik terjadi di tingkat artikel. Untuk publikasi yang terdiri dari beberapa artikel, Anda dapat memiliki pemecah masalah konflik yang berbeda yang melayani artikel yang berbeda, atau penyelesai konflik yang sama yang melayani satu artikel, beberapa artikel, atau semua artikel yang terdiri dari publikasi.
Jika Anda berencana menggunakan pemecah masalah konflik berbasis prioritas default, Anda tidak perlu mengatur properti pemecah masalah artikel. Jika Anda ingin menggunakan pemecah masalah artikel alih-alih pemecah masalah default, Anda harus mengatur properti pemecah masalah untuk artikel yang akan menggunakannya dengan memilih pemecah masalah yang tersedia di Publisher. Informasi spesifik apa pun yang perlu diteruskan ke resolver juga dapat ditentukan dalam properti informasi resolver.
Replikasi penggabungan menawarkan empat jenis pemecah masalah konflik:
Pemecah masalah konflik berbasis prioritas default
Mekanisme resolusi default bersifat berbeda, tergantung pada apakah langganan adalah langganan klien atau langganan server. Anda menetapkan nilai prioritas untuk pelanggan individual yang menggunakan langganan server; perubahan yang dilakukan pada simpul dengan prioritas tertinggi memenangkan konflik apa pun. Untuk langganan klien, perubahan pertama yang ditulis ke Penerbit memenangkan konflik.
Setelah langganan dibuat, langganan tidak dapat diubah dari satu jenis ke jenis lainnya.
Penangan logika bisnis
Kerangka kerja handler logika bisnis memungkinkan Anda menulis rakitan kode terkelola yang dipanggil selama proses sinkronisasi penggabungan. Assembly mencakup logika bisnis yang dapat merespons konflik dan sejumlah kondisi lain selama sinkronisasi. Untuk informasi selengkapnya, lihat Menjalankan Logika Bisnis Selama Sinkronisasi Penggabungan.
Pemecah masalah kustom berbasis COM
Replikasi penggabungan menyediakan API untuk menulis pemecah masalah sebagai objek COM dalam bahasa seperti Microsoft Visual C++ atau Microsoft Visual Basic. Untuk informasi selengkapnya, lihat Pemecah Masalah Kustom Berbasis COM.
Resolver berbasis COM yang disediakan oleh Microsoft
Microsoft SQL Server menyertakan sejumlah pemecah masalah berbasis COM. Untuk informasi selengkapnya, lihat Pemecah Masalah Berbasis COM Microsoft.
Untuk informasi tentang cara memilih jenis resolver yang sesuai, lihat Memilih Resolver.
Catatan
Beberapa penyelesai artikel ditulis untuk menangani konflik hanya untuk operasi tertentu. Misalnya, resolver mungkin menangani pembaruan, tetapi tidak menyisipkan atau menghapus. Pemecah masalah konflik berbasis prioritas default menangani konflik apa pun yang tidak ditangani oleh pemecah masalah artikel.
Untuk menentukan jenis langganan penggabungan dan prioritas resolusi konflik, lihat
SQL Server Management Studio: Tentukan Tipe Langganan Gabungan dan Prioritas Resolusi Konflik (SQL Server Management Studio)
Pemrograman Pemrograman Transact-SQL dan Objek Manajemen Replikasi (RMO) Replikasi: Membuat Langganan Pull dan Membuat Langganan Push
Resolver Interaktif
Replikasi menyediakan antarmuka pengguna Interactive Resolver yang dapat digunakan bersama dengan pemecah masalah konflik berbasis prioritas default atau pemecah masalah artikel. Saat melakukan sinkronisasi sesuai permintaan melalui Microsoft Windows Synchronization Manager, Interactive Resolver menampilkan data konflik pada run-time, dan memungkinkan Anda memilih cara mengatasi konflik. Untuk informasi selengkapnya tentang cara mengaktifkan resolusi interaktif dan meluncurkan Interactive Resolver, lihat Resolusi Konflik Interaktif.
Menampilkan Konflik
Cara paling mudah untuk melihat konflik adalah dengan menggunakan Penampil Konflik Replikasi, yang tersedia dari SQL Server Management Studio ( SQL Server juga menyediakan prosedur tersimpan yang memungkinkan tabel konflik dikueri.). Pemeriksa Konflik dan Pemecah Masalah Interaktif adalah alat serupa, tetapi Pemecah Masalah Interaktif memungkinkan Anda mengatasi konflik saat sinkronisasi terjadi, sedangkan Penampil Konflik dirancang untuk melihat konflik setelah diselesaikan. Jika metadata konflik masih tersedia dalam tabel sistem (metadata konflik dipertahankan selama 14 hari secara default), Anda dapat mengambil alih hasil penyelesaian konflik di Pemantau Konflik, tetapi jika intervensi langsung diperlukan secara teratur, pertimbangkan untuk menggunakan Pemecah Masalah Interaktif.
Catatan
Konflik yang melibatkan rekaman logis tidak ditampilkan di Penampil Konflik. Untuk melihat informasi tentang konflik ini, gunakan prosedur tersimpan replikasi. Untuk informasi selengkapnya, lihat Menampilkan Informasi Konflik untuk Publikasi Gabungan (Pemrograman Transact-SQL Replikasi).
Penampil Konflik menampilkan informasi dari tiga tabel sistem:
Replikasi membuat tabel konflik untuk setiap tabel dalam artikel penggabungan, dengan nama dalam formulir MSmerge_conflict_PublicationName>_<ArticleName>.<
Tabel konflik memiliki struktur yang sama dengan tabel yang menjadi dasarnya. Baris dalam salah satu tabel ini terdiri dari versi baris konflik yang kalah (versi baris yang menang ada di tabel pengguna yang sebenarnya).
Tabel MSmerge_conflicts_info menyediakan informasi tentang setiap konflik, termasuk jenis konflik.
Tabel sysmergearticles mengidentifikasi tabel pengguna mana yang memiliki tabel konflik dan menyediakan informasi tentang tabel konflik.
Secara default, informasi konflik disimpan:
Di Penerbit dan Pelanggan jika tingkat kompatibilitas publikasi adalah 90RTM atau lebih tinggi.
Di Publisher jika tingkat kompatibilitas publikasi lebih rendah dari 80RTM.
Di Publisher jika Pelanggan menjalankan SQL Server Compact. Data konflik tidak dapat disimpan pada Pelanggan Ringkas SQL Server.
Untuk melihat konflik
SQL Server Management Studio: Melihat dan Mengatasi Konflik Data untuk Publikasi Gabungan (SQL Server Management Studio)
Pemrograman Transact-SQL Replikasi: Lihat Informasi Konflik untuk Publikasi Gabungan (Pemrograman Transact-SQL Replikasi)