Lokasi agen, bukan lokasi data, adalah keputusan yang membentuk langganan SQL Server. Mesin yang menjalankan agen membuka koneksi, berjalan di bawah akun tertentu, dan menanggung kesalahan saat sinkronisasi macet. Pada VPN antar situs perbedaan itu adalah desain, bukan detail. Gambarkan koneksi agen sebelum Anda menggambar jaringan.

Tiga peran, bukan dua

Publisher memiliki data artikel, Distributor memiliki basis data distribusi, dan Subscriber menerima perubahan. Log Reader Agent berjalan di Distributor untuk replikasi transaksional. Distribution Agent adalah agen yang lokasinya berubah sesuai jenis langganan, dan karena itulah ia menentukan desain jaringan. Rapikan peran itu sebelum membahas aturan VPN.

Langganan push menjalankan Distribution Agent di Distributor, dan langganan pull menjalankannya di Subscriber, seperti yang disebutkan dokumentasi langganan Microsoft. Semua dalam percakapan jaringan mengikuti mesin mana itu. Catat empat fakta untuk setiap langganan: host agen, identitas prosesnya, login basis data yang digunakannya, dan sumber daya yang harus dijangkau. Fakta-fakta itu, bukan panah diagram, memberi tahu arah mana yang harus bekerja.

push berarti agen tinggal di Distributor

Dengan langganan push, Distributor membuka koneksi ke Subscriber melalui VPN. Pendengar, firewall, dan login SQL di sisi pelanggan harus menerima koneksi yang datang dari sisi jauh. Akun layanan Distributor juga membutuhkan izin pada basis data pelanggan. Rencanakan jalur masuk itu sebelum membuat langganan, karena menemukannya belakangan biasanya berarti membuatnya ulang.

Pengiriman snapshot menambahkan jalur yang tidak pernah dipakai replikasi mantap. Jika snapshot ditempatkan pada berbagi pakai file, Distribution Agent membaca dari berbagi pakai itu dan akun pelanggan harus mencapai jalur UNC yang sama. Aliran perubahan yang berjalan berminggu-minggu tidak mengatakan apa pun tentang apakah inisialisasi ulang akan berhasil. Karena itu berbagi pakai snapshot masuk ke dalam rencana sejak awal.

Jangan membaca push sebagai lalu lintas satu arah. Agen membutuhkan balasan, konfirmasi, dan pertukaran autentikasinya sendiri. Jalur harus dua arah pada tingkat koneksi meskipun data bergerak dalam satu arah.

pull berarti agen tinggal di Subscriber

Langganan pull membalik koneksi: Subscriber menjalankan Distribution Agent dan menghubungi Distributor. Susunan itu cocok dengan kebijakan VPN yang mengizinkan koneksi keluar dari cabang dan memblokir koneksi masuk. Itu juga menaruh keputusan penjadwalan di tangan siapa pun yang merawat server cabang. Pilih ini ketika tim cabang harus memiliki sinkronisasinya sendiri dan menyadari kegagalannya sendiri.

Akun layanan SQL Server Agent milik pelanggan membutuhkan akses baca ke basis data distribusi dan ke berbagi pakai snapshot. Akun itu adalah identitas yang muncul dalam kesalahan replikasi, dan akun layanan lokal tanpa hak domain gagal pada titik yang tampak seperti gangguan jaringan tetapi sebenarnya gangguan kredensial. Periksa akun itu sebelum men-debug terowongan. Memperbaiki login biasanya lebih cepat daripada membuktikan jaringan tidak bersalah.

Kepemilikan mengikuti agen. Pilih push ketika tim pusat harus memiliki jadwal dan kegagalan sekaligus. Apa pun yang Anda pilih, tuliskan di samping langganan agar insinyur berikutnya tahu ke mana harus melihat lebih dulu.

Penerbitan ulang mengubah sebaran, bukan kepemilikan

Pelanggan dapat dikonfigurasi untuk menerbitkan ulang ke pelanggan lain, sehingga satu basis data cabang dapat melayani beberapa konsumen lokal tanpa masing-masing menarik melalui WAN. Basis data perantara sekarang menyimpan publikasi dan agennya sendiri. Ia juga mewarisi izin, pemantauan, dan rencana pemulihan yang sebelumnya tidak dimilikinya. Peran tambahan itu adalah harga untuk menghapus pengiriman WAN yang berulang.

Urutan yang didokumentasikan penting: inisialisasi langganan masuk sebelum membuat publikasi di hilir. Perlakukan itu sebagai langkah siklus hidup dengan verifikasi, bukan sebagai dokumen yang dilewati. Membalikkannya menghasilkan rantai yang tampak terkonfigurasi dan tidak mengirimkan apa pun.

Nyatakan model penulisan secara eksplisit. Mereplikasi kumpulan data hanya-baca ke konsumen lokal adalah desain yang berbeda dari menerima penulisan di beberapa situs, dan rantai panah tidak menciptakan penyelesaian konflik. Jika cabang harus menulis, itu keputusan terpisah dengan topologinya sendiri. Buat pula ketergantungannya terlihat: ketika penerbit ulang mati, setiap konsumen di bawahnya basi.

Buktikan penempatannya dari ujung ke ujung

Baca jenis langganan dari basis data distribusi alih-alih memercayai ingatan, lalu periksa apakah perubahan benar-benar tiba:

USE distribution;
SELECT publication, subscriber_db, subscription_type
FROM dbo.MSsubscriptions;
EXEC sp_replmonitorsubscriptionpendingcmds
  @publisher = 'PUB1', @publisher_db = 'Sales',
  @publication = 'SalesPub', @subscriber = 'BR1',
  @subscriber_db = 'Sales';

subscription_type bernilai 0 adalah push dan 1 adalah pull, dan tidak dapat diubah di tempat, jadi ketidakcocokan berarti membuat ulang langganan bukan menyuntingnya. Panggilan perintah tertunda memberi tahu apakah agen yang dipilih memindahkan pekerjaan atau hanya berjalan. Langganan yang melaporkan nol perintah tertunda sementara tabel pelanggan tetap kosong adalah kesalahan berbeda dari yang melaporkan tumpukan yang bertambah, dan keduanya menuju pemilik yang berbeda.

Tutup dengan perubahan nyata: sisipkan atau perbarui satu baris di Publisher, tunggu agen melapor, dan baca baris itu di Subscriber. Lakukan sekali lagi melewati gangguan VPN singkat untuk melihat bagaimana agen pulih. Langganan yang bertahan dalam uji itu memiliki penempatan yang dapat Anda dokumentasikan dan pertahankan.

Artikel terkait