Tentukan Pemecah Masalah Artikel Penggabungan

Berlaku untuk:SQL Server

Topik ini menjelaskan cara menentukan pemecah masalah artikel penggabungan di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL.

Rekomendasi

  • Replikasi penggabungan memungkinkan jenis pemecah masalah artikel berikut:

    • Pemecah masalah default. Perilaku resolver default bergantung pada apakah langganan adalah langganan klien atau langganan server. Untuk informasi selengkapnya tentang menentukan jenis langganan, lihat Menentukan Tipe Langganan Gabungan dan Prioritas Resolusi Konflik (SQL Server Management Studio).

    • Resolver kustom yang telah Anda tulis, yang dapat menjadi handler logika bisnis (ditulis dalam kode terkelola) atau resolver berbasis COM kustom. Untuk informasi selengkapnya, lihat Deteksi dan Resolusi Konflik Replikasi Gabungan Tingkat Lanjut. Jika Anda perlu menerapkan logika kustom yang dijalankan untuk setiap baris yang direplikasi, bukan hanya untuk baris yang bertentangan, lihat Menerapkan Pengelola Logika Bisnis untuk Artikel Penggabungan.

    • Resolver berbasis COM standar, yang disertakan dengan Microsoft SQL Server.

  • Untuk menggunakan resolver selain resolver default, Anda harus menyalin resolver ke komputer tempat Agen Penggabungan berjalan dan mendaftarkannya (jika Anda menggunakan handler logika bisnis, itu juga harus didaftarkan di Publisher). Agen Penggabungan berjalan di:

    • Distributor untuk langganan push

    • Pelanggan untuk langganan penarikan

    • Server Microsoft Layanan Informasi Internet (IIS) untuk langganan penarikan yang menggunakan sinkronisasi Web

Menggunakan SQL Server Management Studio

Setelah resolver terdaftar, tentukan bahwa artikel harus menggunakan resolver pada tab Resolver dari kotak dialog Properti Artikel - <Artikel> , yang tersedia di kotak dialog Panduan Publikasi Baru dan Properti Publikasi - <Publikasi> . Untuk informasi selengkapnya tentang menggunakan panduan dan mengakses kotak dialog, lihat Membuat Publikasi dan Menampilkan dan Mengubah Properti Publikasi.

Untuk menentukan resolver

  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.

  3. Pada halaman Properti Artikel - <Artikel> , klik tab Pemecah Masalah .

  4. Pilih Gunakan pemecah masalah kustom (terdaftar di Distributor), lalu dalam daftar, klik pemecah masalah.

  5. Jika pemecah masalah memerlukan input (seperti nama kolom), tentukan di kotak teks Masukkan informasi yang diperlukan oleh pemecah masalah .

  6. Pilih OK.

  7. Ulangi proses ini untuk setiap artikel yang memerlukan penyelesai.

Menggunakan T-SQL

Untuk mendaftarkan penyelesai konflik kustom

  1. Jika Anda berencana untuk mendaftarkan penyelesai konflik kustom Anda sendiri, buat salah satu jenis berikut:

  2. Untuk menentukan apakah resolver yang diinginkan sudah terdaftar, jalankan sp_enumcustomresolvers (Transact-SQL) di Publisher pada database apa pun. Ini menampilkan deskripsi resolver kustom serta pengidentifikasi kelas (CLSID) untuk setiap resolver berbasis COM yang terdaftar di Distributor atau informasi tentang rakitan terkelola untuk setiap handler logika bisnis yang terdaftar di Distributor.

  3. Jika resolver kustom yang diinginkan belum terdaftar, jalankan sp_registercustomresolver (Transact-SQL) di Distributor. Tentukan nama untuk resolver untuk @article_resolver; untuk handler logika bisnis, ini adalah nama assembly yang mudah diingat. Untuk resolver berbasis COM, tentukan CLSID DLL untuk @resolver_clsid, dan untuk handler logika bisnis, tentukan nilai true untuk @is_dotnet_assembly, nama assembly untuk @dotnet_assembly_name, dan nama kelas yang sepenuhnya memenuhi syarat yang mengambil alih BusinessLogicModule untuk @dotnet_class_name.

    Catatan

    Jika rakitan handler logika bisnis tidak disebarkan di direktori yang sama dengan Agen Penggabungan yang dapat dieksekusi, dalam direktori yang sama dengan aplikasi yang secara sinkron memulai Agen Penggabungan, atau di cache perakitan global (GAC), Anda perlu menentukan jalur lengkap dengan nama rakitan untuk @dotnet_assembly_name.

  4. Jika resolver adalah resolver berbasis COM:

    • Salin DLL resolver kustom ke Distributor untuk langganan push atau ke Pelanggan untuk langganan penarikan.

      Catatan

      Pemecah masalah kustom Microsoft dapat ditemukan di direktori C:\Program Files\Microsoft SQL Server\nnn\COM.

    • Gunakan regsvr32.exe untuk mendaftarkan DLL pemecah masalah kustom dengan sistem operasi. Misalnya, menjalankan hal berikut dari prompt perintah mendaftarkan SQL Server Additive Conflict Resolver:

      regsvr32 ssradd.dll  
      
  5. Jika resolver adalah handler logika bisnis, sebarkan assembly di folder yang sama dengan Merge Agent executable (replmerg.exe), di folder yang sama dengan aplikasi yang memanggil Agen Penggabungan, atau di folder yang ditentukan untuk parameter @dotnet_assembly_name di langkah 3.

    Catatan

    Lokasi penginstalan default agen penggabungan yang dapat dieksekusi adalah C:\Program Files\Microsoft SQL Server\nnn\COM.

Tentukan pemecah masalah kustom saat menentukan artikel penggabungan

  1. Jika Anda berencana menggunakan pemecah masalah konflik kustom, buat dan daftarkan pemecah masalah menggunakan prosedur di atas.

  2. Di Publisher, jalankan sp_enumcustomresolvers (Transact-SQL) dan catat nama pemecah masalah kustom yang diinginkan di bidang nilai kumpulan hasil.

  3. Di Publisher pada database publikasi, jalankan sp_addmergearticle (Transact-SQL). Tentukan nama resolver dari langkah 2 untuk @article_resolver dan input apa pun yang diperlukan ke resolver kustom menggunakan parameter @resolver_info . Untuk pemecah masalah kustom berbasis prosedur tersimpan, @resolver_info adalah nama prosedur tersimpan. Untuk informasi selengkapnya tentang input yang diperlukan untuk pemecah masalah yang disediakan oleh Microsoft, lihat Pemecah Masalah Berbasis MICROSOFT COM.

Menentukan atau mengubah pemecah masalah kustom untuk artikel penggabungan yang sudah ada

  1. Untuk menentukan apakah resolver kustom telah ditentukan untuk artikel, atau untuk mendapatkan nama resolver, jalankan sp_helpmergearticle (Transact-SQL). Jika ada pemecah masalah kustom yang ditentukan untuk artikel, namanya akan ditampilkan di bidang article_resolver . Setiap input yang diberikan ke resolver akan ditampilkan di bidang resolver_info dari kumpulan hasil.

  2. Di Publisher, jalankan sp_enumcustomresolvers (Transact-SQL) dan catat nama pemecah masalah kustom yang diinginkan di bidang nilai kumpulan hasil.

  3. Di Publisher pada database publikasi, jalankan sp_changemergearticle (Transact-SQL). Tentukan nilai article_resolver, termasuk jalur lengkap untuk penangan logika bisnis, untuk @property, dan nama pemecah masalah kustom yang diinginkan dari langkah 2 untuk @value.

  4. Untuk mengubah input yang diperlukan untuk resolver kustom, jalankan sp_changemergearticle (Transact-SQL) lagi. Tentukan nilai resolver_info untuk @property dan input apa pun yang diperlukan ke pemecah masalah kustom untuk @value. Untuk pemecah masalah kustom berbasis prosedur tersimpan, @resolver_info adalah nama prosedur tersimpan. Untuk informasi selengkapnya tentang input yang diperlukan, lihat Pemecah Masalah Berbasis MICROSOFT COM.

Membatalkan pendaftaran penyelesai konflik kustom

  1. Di Publisher, jalankan sp_enumcustomresolvers (Transact-SQL) dan catat nama pemecah masalah kustom untuk dihapus di bidang nilai kumpulan hasil.

  2. Jalankan sp_unregistercustomresolver (Transact-SQL) di Distributor. Tentukan nama lengkap pemecah masalah kustom dari langkah 1 untuk @article_resolver.

Contoh (Transact-SQL)

Contoh ini membuat artikel baru dan menentukan bahwa SQL Server Averaging Conflict Resolver digunakan untuk menghitung rata-rata kolom UnitPrice saat konflik terjadi.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = 'AdvWorksSalesOrdersMerge';
SET @article = 'Products';

EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_object = @article, 
    @article_resolver = 'Microsoft SQL Server Averaging Conflict Resolver', 
    @resolver_info = 'UnitPrice';
GO

Contoh ini mengubah artikel untuk menentukan penggunaan SQL Server Additive Conflict Resolver untuk menghitung jumlah kolom UnitsOnOrder saat konflik terjadi.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = 'AdvWorksSalesOrdersMerge';
SET @article = 'Products';

EXEC sp_changemergearticle 
    @publication = @publication, 
    @article = @article, 
    @property='article_resolver', 
    @value='Microsoft SQL Server Additive Conflict Resolver';

EXEC sp_changemergearticle 
    @publication = @publication, 
    @article = @article, 
    @property='resolver_info', 
    @value='UnitsOnOrder';
GO

Lihat Juga

Deteksi dan Resolusi Konflik Replikasi Gabungan Tingkat Lanjut
Menerapkan Pengelola Logika Bisnis untuk Artikel Penggabungan