Tentukan properti Replikasi Penggabungan

Berlaku untuk:SQL Server

Topik ini menjelaskan cara menentukan berbagai properti untuk replikasi penggabungan Anda.

Artikel Penggabungan adalah Unduh-Saja

Artikel khusus unduhan dirancang untuk aplikasi dengan data yang tidak diperbarui di Pelanggan. Untuk informasi selengkapnya, lihat Mengoptimalkan Performa Replikasi Penggabungan dengan Artikel Unduh-Saja.

Pertimbangan

  • Jika Anda menentukan bahwa artikel hanya diunduh setelah langganan diinisialisasi, semua langganan klien yang menerima artikel harus diinisialisasi ulang. Langganan server tidak harus diinisialisasi ulang. Untuk informasi selengkapnya tentang efek perubahan properti, lihat Mengubah Publikasi dan Properti Artikel.

Menggunakan SQL Server Management Studio

Pada halaman Artikel

Pada halaman Artikel Wizard Publikasi Baru pilih tabel, lalu pilih kotak centang Tabel yang disorot hanya diunduh.

Pada tab Properti dari Properti Artikel

  1. Pada halaman Artikel Panduan Publikasi Baru atau kotak dialog Properti Publikasi - <Publikasi> , pilih tabel, lalu klik Properti Artikel.

  2. Klik Atur Properti Artikel Tabel yang Disorot atau Atur Properti Semua Artikel Tabel.

  3. Di bagian Objek Tujuan dari tab Properti dari kotak dialog Properti Artikel - <Artikel> , tentukan salah satu nilai berikut untuk arah Sinkronisasi:

    • Unduh ke Pelanggan, larang perubahan Pelanggan
    • Unduh ke Pelanggan, izinkan perubahan Pelanggan
  4. Jika Anda berada dalam kotak dialog Properti Publikasi - <Publikasi> , klik OK untuk menyimpan dan menutup kotak dialog.

Menggunakan Transact-SQL

Artikel baru

  1. Jalankan sp_addmergearticle, menentukan nilai 1 atau 2 untuk parameter @subscriber_upload_options. Angka sesuai dengan perilaku berikut:

    • 0 - Tidak ada batasan (default). Perubahan yang dilakukan di Pelanggan diunggah ke Penerbit.
    • 1 - Perubahan diizinkan di Pelanggan, tetapi tidak diunggah ke Penerbit.
    • 2 - Perubahan tidak diizinkan di Pelanggan.

    Catatan

    Jika tabel sumber untuk artikel sudah diterbitkan di publikasi lain, nilai @subscriber_upload_options harus sama untuk kedua artikel.

Artikel yang sudah ada

  1. Untuk menentukan apakah artikel hanya diunduh, jalankan sp_helpmergearticle dan verifikasi nilai upload_options untuk artikel dalam kumpulan hasil.

  2. Jika nilai yang dikembalikan di langkah 1 adalah 0, jalankan sp_changemergearticle, menentukan nilai subscriber_upload_options untuk @property, nilai 1 untuk @force_invalidate_snapshot dan @force_reinit_subscription, dan nilai 1 atau 2 untuk @value, yang sesuai dengan perilaku berikut:

    • 1 - Perubahan diizinkan di Pelanggan, tetapi tidak diunggah ke Penerbit.

    • 2 - Perubahan tidak diizinkan di Pelanggan.

      Catatan

      Jika tabel sumber untuk artikel sudah diterbitkan di publikasi lain, perilaku unduhan saja harus sama untuk kedua artikel.

Resolusi Konflik Interaktif

Replikasi Microsoft SQL Server menyediakan Interactive Resolver, yang memungkinkan Anda mengatasi konflik secara manual selama sinkronisasi sesuai permintaan di Microsoft Windows Synchronization Manager. Setelah resolusi interaktif diaktifkan, atasi konflik secara interaktif selama sinkronisasi, menggunakan Pemecah Masalah Interaktif. Pemecah Masalah Interaktif tersedia melalui Microsoft Windows Synchronization Manager. Untuk informasi selengkapnya, lihat Menyinkronkan Langganan Menggunakan Pengelola Sinkronisasi Windows (Pengelola Sinkronisasi Windows).

Rekomendasi

  • Jika sinkronisasi dilakukan di luar Pengelola Sinkronisasi Windows (sebagai sinkronisasi terjadwal atau sinkronisasi sesuai permintaan di SQL Server Management Studio atau Replication Monitor), konflik diselesaikan secara otomatis tanpa intervensi pengguna, menggunakan resolusi konflik default yang ditentukan untuk artikel tersebut. Untuk informasi selengkapnya, lihat Resolusi Konflik Interaktif.

Menggunakan SQL Server Management Studio

Mengaktifkan resolusi konflik interaktif untuk artikel

  1. Pada halaman Artikel Panduan Publikasi Baru atau kotak dialog Properti Publikasi - <Publikasi> , pilih tabel. Untuk informasi selengkapnya tentang menggunakan panduan dan mengakses kotak dialog, lihat Membuat Publikasi dan Menampilkan dan Mengubah Properti Publikasi.
  2. Klik Properti Artikel, lalu klik Atur Properti Artikel Tabel yang Disorot atau Atur Properti Semua Artikel Tabel.
  3. Pada halaman Properti Artikel - <Artikel> atau Properti Artikel - <ArticleType> , klik tab Pemecah Masalah .
  4. Pilih Izinkan Pelanggan untuk mengatasi konflik secara interaktif selama sinkronisasi sesuai permintaan.
  5. Pilih OK.
  6. Jika Anda berada dalam kotak dialog Properti Publikasi - <Publikasi> , klik OK untuk menyimpan dan menutup kotak dialog.

Tentukan bahwa langganan harus menggunakan resolusi konflik interaktif

  1. Dalam kotak dialog Properti Langganan - <Pelanggan>: <SubscriptionDatabase> , tentukan nilai True untuk opsi Atasi konflik secara interaktif. Untuk informasi selengkapnya tentang mengakses kotak dialog ini, lihat Menampilkan dan Mengubah Properti Langganan Push dan Menampilkan dan Mengubah Properti Langganan Pull.
  2. Pilih OK.

Menggunakan Transact-SQL

Anda dapat secara terprogram menentukan bahwa Pelanggan akan menggunakan antarmuka grafis ini untuk mengatasi konflik artikel saat langganan penarikan ke publikasi gabungan dibuat. Hanya konflik dalam artikel yang mendukung opsi ini yang akan ditampilkan di Pemecah Masalah Interaktif.

Membuat langganan penarikan penggabungan yang menggunakan Interactive Resolver

  1. Di Publisher pada database publikasi, jalankan sp_helpmergearticle, menentukan @publication. Perhatikan nilai allow_interactive_resolver untuk setiap artikel dalam tataan hasil tempat Pemecah Masalah Interaktif akan digunakan.
    • Jika nilai ini adalah 1, Pemecah Masalah Interaktif akan digunakan.
    • Jika nilai ini adalah 0, Anda harus terlebih dahulu mengaktifkan Interactive Resolver untuk setiap artikel. Untuk melakukan ini, jalankan sp_changemergearticle, tentukan @publication, @article, nilai allow_interactive_resolver untuk @property, dan nilai true untuk @value.
  2. Di Pelanggan pada database langganan, jalankan sp_addmergepullsubscription. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.
  3. Di Pelanggan pada database langganan, jalankan sp_addmergepullsubscription_agent, menentukan parameter berikut:
    • @publisher, @publisher_db (database yang diterbitkan), dan @publication.
    • Nilai true untuk @enabled_for_syncmgr.
    • Nilai true untuk @use_interactive_resolver.
    • Informasi akun keamanan yang diperlukan oleh Agen Penggabungan. Untuk informasi selengkapnya, lihat Membuat Langganan Pull.
  4. Di Publisher pada database publikasi, jalankan sp_addmergesubscription.

Tentukan artikel yang mendukung Interactive Resolver

  1. Di Publisher pada database publikasi, jalankan sp_addmergearticle. Tentukan nama publikasi tempat artikel berada, @publicationnama untuk artikel untuk @article, objek database yang diterbitkan untuk @source_object, dan nilai true untuk @allow_interactive_resolver. Untuk informasi selengkapnya, lihat Menentukan Artikel.

Pelacakan Konflik dan Tingkat Resolusi untuk Artikel Penggabungan

Topik ini menjelaskan cara menentukan tingkat pelacakan konflik dan resolusi untuk artikel penggabungan di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.

Saat langganan ke publikasi gabungan disinkronkan, replikasi memeriksa konflik yang disebabkan oleh perubahan pada data yang sama yang dibuat di Penerbit dan Pelanggan. Anda dapat menentukan apakah konflik terdeteksi di tingkat baris, di mana setiap perubahan pada baris dianggap sebagai konflik, atau tingkat kolom, di mana hanya perubahan pada baris dan kolom yang sama yang dianggap sebagai konflik. Resolusi konflik untuk artikel dilakukan di tingkat baris. Untuk informasi selengkapnya tentang deteksi dan resolusi konflik saat rekaman logis digunakan, lihat Mendeteksi dan Mengatasi Konflik di Rekaman Logis.

Batasan dan Pembatasan

  • Jika Anda mengubah tingkat pelacakan setelah langganan diinisialisasi, langganan tersebut harus diinisialisasi ulang. Untuk informasi selengkapnya tentang efek perubahan properti, lihat Mengubah Publikasi dan Properti Artikel.
  • Dengan pelacakan tingkat baris dan kolom, resolusi konflik selalu dilakukan di tingkat baris: baris yang menang menimpa baris yang kalah. Replikasi penggabungan juga memungkinkan Anda menentukan bahwa konflik dilacak dan diselesaikan pada tingkat catatan logis, tetapi opsi ini tidak tersedia dari SQL Server Management Studio. Untuk informasi tentang mengatur opsi ini dari prosedur tersimpan replikasi, lihat Menentukan Hubungan Rekaman Logis Antara Artikel Tabel Gabungan.

Menggunakan SQL Server Management Studio

Tentukan pelacakan tingkat baris atau kolom untuk artikel penggabungan pada tab Properti dari kotak dialog Properti Artikel, yang tersedia di Panduan Publikasi Baru dan kotak dialog Properti Publikasi - <Publikasi> . Untuk informasi selengkapnya tentang menggunakan panduan dan mengakses kotak dialog, lihat Membuat Publikasi dan Menampilkan dan Mengubah Properti Publikasi.

Tentukan pelacakan tingkat baris atau kolom

  1. Pada halaman Artikel Panduan Publikasi Baru atau kotak dialog Properti Publikasi - <Publikasi> , pilih tabel.
  2. Klik Properti Artikel, lalu klik Atur Properti Artikel Tabel yang Disorot atau Atur Properti Semua Artikel Tabel.
  3. Pada tab Properti dari kotak dialog Artikel> Properti <Artikel, pilih salah satu nilai berikut untuk properti Tingkat pelacakan: Pelacakan tingkat baris atau Pelacakan tingkat kolom.
  4. Jika Anda berada dalam kotak dialog Properti Publikasi - <Publikasi> , klik OK untuk menyimpan dan menutup kotak dialog.

Menggunakan Transact-SQL

Untuk menentukan opsi pelacakan konflik untuk artikel penggabungan baru

  1. Di Publisher pada database publikasi, jalankan sp_addmergearticle dan tentukan salah satu nilai berikut untuk @column_tracking:

    • true - Gunakan pelacakan tingkat kolom untuk artikel.
    • false - Gunakan pelacakan tingkat baris, yang merupakan default.

Mengubah opsi pelacakan konflik untuk artikel penggabungan

  1. Untuk menentukan opsi pelacakan konflik untuk artikel penggabungan, jalankan sp_helpmergearticle. Perhatikan nilai opsi column_tracking dalam tataan hasil untuk artikel. Nilai 1 berarti bahwa pelacakan tingkat kolom sedang digunakan, dan nilai 0 berarti bahwa pelacakan tingkat baris sedang digunakan.

  2. Di Publisher pada database publikasi, jalankan sp_changemergearticle. Tentukan nilai column_tracking untuk @property dan salah satu nilai berikut untuk @value:

    • true - Gunakan pelacakan tingkat kolom untuk artikel.
    • false - Gunakan pelacakan tingkat baris, yang merupakan default.

    Tentukan nilai 1 untuk dan @force_invalidate_snapshot@force_reinit_subscription.

Mengelola penghapusan pelacakan

Catatan

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Secara default, replikasi penggabungan menyinkronkan perintah DELETE antara Penerbit dan Pelanggan. Replikasi penggabungan memungkinkan Anda mempertahankan baris dalam database langganan bahkan ketika telah dihapus dari publikasi, dan sebaliknya. Anda dapat secara terprogram menentukan bahwa perintah DELETE diabaikan saat membuat artikel baru atau Anda dapat mengaktifkan fungsionalitas ini di lain waktu menggunakan prosedur tersimpan replikasi.

Penting

Mengaktifkan fungsionalitas ini akan mengakibatkan non-konvergensi, yang berarti bahwa data yang ada di Pelanggan tidak akan secara akurat mencerminkan data di Penerbit. Anda harus menerapkan mekanisme Anda sendiri untuk menghapus baris yang dihapus secara manual.

Tentukan bahwa penghapusan diabaikan untuk artikel penggabungan baru

Di Publisher pada database publikasi, jalankan sp_addmergearticle (Transact-SQL). Tentukan nilai false untuk @delete_tracking. Untuk informasi selengkapnya, lihat Menentukan Artikel.

Catatan

Jika tabel sumber untuk artikel sudah diterbitkan di publikasi lain, nilai delete_tracking harus sama untuk kedua artikel.

Tentukan bahwa penghapusan diabaikan untuk artikel penggabungan yang sudah ada

  1. Untuk menentukan apakah kompensasi kesalahan diaktifkan untuk artikel, jalankan sp_helpmergearticle (Transact-SQL) dan catat nilai delete_tracking dalam tataan hasil. Jika nilai ini adalah 0, penghapusan sudah diabaikan.

  2. Jika nilai dari langkah 1 adalah 1, jalankan sp_changemergearticle (Transact-SQL) di Penerbit pada database publikasi. Tentukan nilai delete_tracking untuk @property, dan nilai false untuk @value.

    Catatan

    Jika tabel sumber untuk artikel sudah diterbitkan di publikasi lain, nilai delete_tracking harus sama untuk kedua artikel.

Urutan Pemrosesan

Replikasi penggabungan memungkinkan Anda menentukan urutan di mana artikel diproses oleh Agen Penggabungan selama proses sinkronisasi. Anda dapat menetapkan pesanan ke setiap artikel secara terprogram saat membuat artikel menggunakan prosedur tersimpan replikasi. Artikel diproses secara berurutan dari nilai terendah hingga tertinggi. Jika dua artikel memiliki nilai yang sama, artikel tersebut diproses secara bersamaan.

Bagaimana Urutan Pemrosesan Ditentukan

Selama sinkronisasi penggabungan, artikel secara default, diproses dalam urutan yang diperlukan oleh dependensi antar objek, termasuk batasan integritas referensial deklaratif (DRI) yang ditentukan pada tabel dasar. Pemrosesan melibatkan menghitung perubahan pada tabel lalu menerapkan perubahan tersebut. Jika tidak ada DRI yang ada tetapi filter gabungan atau rekaman logis ada di antara artikel tabel, artikel diproses dalam urutan yang diperlukan oleh filter dan rekaman logis. Artikel yang tidak terkait dengan artikel lain melalui DRI, filter gabungan, catatan logis, atau dependensi lainnya diproses sesuai dengan nama panggilan artikel dalam tabel sistem sysmergearticles (Transact-SQL).

Pertimbangkan publikasi yang menyertakan tabel SalesOrderHeader dan SalesOrderDetail dengan kolom kunci utama SalesOrderID dalam tabel SalesOrderHeader dan kolom kunci asing terkait SalesOrderID dalam tabel SalesOrderDetail. Selama sinkronisasi, replikasi penggabungan mencegah pelanggaran kunci asing dengan menyisipkan baris baru apa pun di SalesOrderHeader sebelum menyisipkan baris terkait di SalesOrderDetail. Demikian pula, baris dihapus dari SalesOrderDetail sebelum baris terkait dihapus dari SalesOrderHeader.

Namun, dalam beberapa aplikasi integritas referensial diberlakukan melalui pemicu database, atau di tingkat aplikasi, bukan melalui DRI. Mengingat publikasi yang dijelaskan di atas, alih-alih DRI, tabel SalesOrderDetail dapat memiliki pemicu sisipkan yang memastikan baris terkait dalam tabel SalesOrderHeader ada sebelum mengizinkan penyisipan. SalesOrderHeader dapat memiliki pemicu penghapusan yang memastikan tidak ada baris terkait di SalesOrderDetail sebelum mengizinkan penghapusan. Replikasi penggabungan tidak memperhitungkan pemicu saat menentukan urutan pemrosesan artikel karena tidak dapat menentukan hasil pemicu hingga diaktifkan. Demikian pula, replikasi tidak dapat memperhitungkan batasan yang ditentukan di tingkat aplikasi.

Ketika integritas referensial dipertahankan melalui pemicu atau di tingkat aplikasi, Anda harus menentukan urutan di mana artikel harus diproses. Dalam contoh dengan pemicu, Anda akan menentukan bahwa tabel SalesOrderHeader harus diproses sebelum SalesOrderDetail, karena pemesanan artikel didasarkan pada sisipkan pesanan. Replikasi penggabungan akan secara otomatis membalikkan urutan penghapusan. Replikasi penggabungan tidak akan gagal tanpa pengurutan artikel, karena Agen Penggabungan terus memproses artikel jika terjadi pelanggaran batasan; kemudian mencoba kembali operasi apa pun yang gagal setelah artikel lain diproses. Menentukan urutan artikel hanya menghindari percobaan ulang dan pemrosesan tambahan yang terkait dengannya. Jika Anda menentukan urutan yang salah (misalnya, yang menghasilkan rekaman detail yang diproses sebelum rekaman header), replikasi penggabungan akan mencoba kembali pemrosesan hingga berhasil.

Artikel baru

  1. Di Publisher pada database publikasi, jalankan sp_addmergearticle (Transact-SQL). Tentukan nilai bilangan bulat yang mewakili urutan pemrosesan untuk artikel untuk @processing_order. Untuk informasi selengkapnya, lihat Menentukan Artikel.

    Catatan

    Saat membuat artikel yang diurutkan, Anda harus meninggalkan celah di antara nilai urutan artikel. Ini memudahkan untuk mengatur nilai baru di masa mendatang. Misalnya, jika Anda memiliki tiga artikel yang perlu Anda tentukan urutan pemrosesan tetap, tetapkan nilai @processing_order masing-masing menjadi 10, 20, dan 30 daripada 1, 2, dan 3.

Artikel yang sudah ada

  1. Untuk menentukan urutan pemrosesan artikel, jalankan sp_helpmergearticle (Transact-SQL) dan perhatikan nilai processing_order dalam tataan hasil.
  2. Di Publisher pada database publikasi, jalankan sp_changemergearticle (Transact-SQL). Tentukan nilai processing_order untuk @property dan nilai bilangan bulat yang mewakili urutan pemrosesan untuk @value.

Lihat Juga

Optimalkan Performa Replikasi Penggabungan dengan Artikel Khusus Unduhan
Tentukan Artikel
Menampilkan dan Mengubah Properti Artikel