Mengaktifkan langganan terbarukan replikasi transaksional di SQL Server 2019

Tanggal pembuatan halaman :

Pendahuluan dan tindakan pencegahan

Artikel ini ditujukan untuk replikasi di SQL Server 2019. Salah satu fungsi di dalamnya adalah "langganan terbarukan" diaktifkan.

Fitur ini diaktifkan secara default di versi SQL Server sebelumnya, tetapi telah dinonaktifkan sejak (mungkin) 2017.

Versi SQL Server yang akan datang dapat menghapus fitur ini. Kecuali untuk meningkatkan lingkungan yang ada, kami sarankan Anda menggantinya dengan konstruksi baru dengan replikasi gabungan, dll.

referensi

lingkungan

Gunakan dua server, satu server dan dua SQL Server. Windows Server berada dalam keadaan di mana tidak ada pengaturan tambahan yang dibuat segera setelah instalasi.

Unit 1 (sisi publikasi)
  • Edisi Standar Windows Server 2019
  • SQL Server 2019 Developer Edition (diperlukan Edisi Standar atau lebih tinggi)
  • SQL Server Manajemen Studio 18.9.1
Unit kedua (sisi pelanggan)
  • Edisi Standar Windows Server 2019
  • SQL Server 2019 Edisi Ekspres
  • SQL Server Manajemen Studio 18.9.1

maksud

Bahkan jika rekaman tabel di database server pertama atau kedua diperbarui Pastikan bahwa catatan tabel di server satu sama lain disinkronkan.

Omong-omong, satu di sisi publikasi baik-baik saja, tetapi sisi pelanggan dapat memiliki sejumlah unit. Ini juga bekerja dengan beberapa contoh SQL Server pada satu server.

Menginstal SQL Server

Menginstal SQL Server bukanlah bagian utama dari Tips ini, jadi saya tidak akan membahas detailnya. Hanya yang relevan dengan replikasi yang terdaftar.

Menginstal sisi publikasi memerlukan Edisi Standar atau lebih tinggi. Tips ini menginstal Edisi Pengembang sebagai lingkungan pengujian.

Pelanggan baik-baik saja dengan Edisi Ekspres. Tentu saja, edisi lain baik-baik saja, tergantung pada konfigurasi DB.

Untuk Pemilihan Fitur, pilih Layanan Mesin Database dan Replikasi SQL Server. Ini sama untuk sisi publikasi dan sisi pelanggan.

Konfigurasi Instans default ke sisi publikasi dan sisi pelanggan. Bahkan jika Anda mengubah nama instance, perbedaannya adalah apakah Anda menentukan nama instance dalam spesifikasi server nanti atau tidak.

Di sisi publikasi, konfigurasikan Agen SQL Server untuk memulai secara otomatis. Anda dapat mengubah pengaturan ini nanti.

Tip ini mengautentikasi replikasi dengan akun SQL Server sa. Oleh karena itu, aktifkan autentikasi SQL Server. Jika Anda tidak ingin menggunakan akun sa untuk alasan keamanan, ganti bagian otentikasi SQL Server dari penjelasan nanti dengan otentikasi Windows atau akun lain.

Jadikan pengaturan ini sama di kedua server.

Menginstal SQL Server Management Studio

Instal SQL Server Management Studio yang Anda unduh. Karena layar instalasi hanya untuk menginstal, penjelasannya dihilangkan.

Restart Windows jika Anda diminta untuk me-restart setelah instalasi. Juga, instal tambalan apa pun di Pembaruan Windows.

Membuat database dan tabel sisi penerbitan

Jika Anda membuat tabel di sisi publikasi, sisi pelanggan secara otomatis mereplikasi tabel atau rekaman.

Metode pembuatannya sama dengan prosedur normal, jadi saya akan menghilangkan detailnya.

Anda membuat database bernama Publikasi DB di SQL Server Management Studio.

Buat tabel bernama "Pengguna" dan daftarkan kolom sebagai berikut: Yang perlu Anda lakukan adalah memeriksa sinkronisasi catatan, sehingga nama, nomor, dan isi kolom tabel bisa apa saja. Namun, hanya kunci utama yang diperlukan.

Tambahkan beberapa rekaman untuk memastikan bahwa rekaman disinkronkan setelah replikasi dibuat.

Mengkonfigurasi Koneksi Jarak Jauh

Konfigurasikan untuk memungkinkan akses jarak jauh ke database server satu sama lain. Detailnya dirangkum dalam tips berikut.

Mengatur izin folder

Di server di sisi publikasi, buka properti folder berikut ini: Jalur folder tergantung pada versi SQL Server dan nama instans.

  • C:\Program Files\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData

Dari tab Keamanan, tambahkan akun "LAYANAN" dan atur ke kontrol penuh.

Mengkonfigurasi Distribusi

Kali ini, distribusi dibuat di server yang sama dengan publikasi.

Mulai SQL Server Management Studio, klik kanan Replikasi, dan pilih Konfigurasikan Distribusi.

Klik Berikutnya.

Centang "Buat server Anda sendiri > distributor Anda sendiri" <.

Setelah itu, klik "Next" apa adanya untuk menyelesaikannya.

Membuat publikasi

Awalnya, itu dibuat dari wizard seperti yang ditunjukkan pada gambar berikut, Di SQL Server 2019, membuat dari wizard tidak mengaktifkan "langganan terbarukan" dan tidak mengizinkan sinkronisasi rekaman antar tabel.

Oleh karena itu, kami menggunakan T-SQL untuk membuat publikasi di sini.

Berikut ini adalah SQL untuk membuat publikasi dengan autentikasi SQL Server: Harap ubah kata sandi sesuai dengan pengaturan Anda.

-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB'; 
SET @publication = N'パブリケーション'; 
SET @login = 'sa'; 
SET @password = 'saパスワード'; 

USE [パブリケーションDB]

-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
    -- 関連するデフォルトのプロパティを明示的に宣言する
    @conflict_policy = N'pub wins';

-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;
GO

Saat menggunakan autentikasi Windows, ubah bagian "sp_addlogreader_agent" dan "sp_addpublication_snapshot" sebagai berikut.

Autentikasi SQL Server

    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

Autentikasi Windows

    @job_login = @login, 
    @job_password = @password,
    @publisher_security_mode = 1;

Jika berhasil dibuat, Anda akan melihat yang berikut ini:

Selain itu, buka properti publikasi yang dibuat dan pastikan bahwa "Langganan terbarukan" diaktifkan.

Menentukan Artikel

Awalnya, jika Anda membuatnya dengan wizard, Anda akan menentukan artikel pada saat yang sama, Karena skrip di atas tidak termasuk pemrosesan artikel, skrip tersebut ditentukan dari properti.

Pilih "Artikel" dari menu di sebelah kiri, periksa tabel yang ingin Anda sinkronkan, dan klik tombol OK.

Msrepl_tran_version ditambahkan ke kolom tabel yang akan disinkronkan, dan pemicu tabel ditambahkan secara bersamaan.

Membuat langganan

Klik kanan publikasi yang baru saja Anda buat dan pilih Langganan Baru.

Klik Berikutnya.

Pilih publikasi yang Anda buat.

Centang Jalankan semua agen di Distributor <pengamaan server>.

Klik tombol Tambahkan Pelanggan SQL Server.

Menentukan server (+ nama instans) untuk mendaftar sebagai pelanggan.

Jika Anda tidak memiliki database pelanggan, buat database baru. Jika sudah ada, pilih karena item pilihan ditampilkan.

Setelah Anda menentukan database, klik Berikutnya.

Jika Anda memiliki lebih dari satu pelanggan, Anda dapat mendaftar sebanyak yang Anda butuhkan di sini.

Klik tombol "..." .

Di sini, agen berjalan di bawah akun sa, tetapi harap atur sesuai dengan lingkungan Anda.

Pilih Jalankan Terus Menerus.

Pengaturan "Langganan Terbarukan" harus beroperasi.

Dalam kasus "commit changes pada saat yang sama", itu disinkronkan segera, tetapi semua server harus berjalan.

"Antrian berubah dan komit jika memungkinkan" mengakumulasi perubahan dalam antrian, sehingga mereka berkomitmen ketika server berjalan, bahkan jika server tidak berjalan. Namun, waktu sinkronisasi lambat.

Centang Gunakan server tertaut atau jarak jauh yang telah ditentukan sebelumnya.

Pilih Sekarang.

Klik Berikutnya.

Klik tombol Selesai.

Tutup jika tidak ada kesalahan.

Setelah beberapa saat, Anda dapat melihat bahwa database telah dibuat di sisi pelanggan dan tabel juga telah dibuat.

Anda dapat memverifikasi bahwa rekaman juga disinkronkan.

Jika tidak disinkronkan setelah beberapa saat, lakukan hal berikut.

Klik kanan langganan yang dibuat dan pilih Pulihkan kembali.

Centang "Gunakan snapshot baru" dan klik tombol "Set to reinitialize".

Jika terjadi kesalahan, coba lagi.

Pemeriksaan operasi

Cobalah untuk menambahkan atau memodifikasi tabel di sisi publikasi.

Tunggu beberapa detik atau lebih untuk memastikannya disinkronkan ke pelanggan.

Sekarang mari kita ubah catatan di sisi pelanggan.

Anda dapat memverifikasi bahwa itu disinkronkan ke sisi publikasi.

Jika Anda memiliki beberapa pelanggan yang terdaftar, pastikan mereka disinkronkan antar pelanggan.