Mendayakan langganan boleh diperbaharui replikasi transaksi dalam SQL Server 2019

Tarikh penciptaan halaman :

Pengenalan dan langkah berjaga-jaga

Artikel ini bertujuan untuk replikasi dalam SQL Server 2019. Salah satu fungsi di dalamnya ialah "langganan boleh diperbaharui" didayakan.

Ciri ini didayakan secara lalai dalam versi SQL Server terdahulu, tetapi telah dinyahdayakan sejak (mungkin) 2017.

Versi masa depan SQL Server mungkin mengalih keluar ciri ini. Kecuali untuk menaik taraf persekitaran yang sedia ada, kami mengesyorkan agar anda menggantikannya untuk pembinaan baru dengan replikasi gabungan dan lain-lain.

Rujukan

Persekitaran

Gunakan dua pelayan, satu pelayan dan dua SQL Server. Pelayan Windows berada dalam keadaan di mana tiada seting tambahan telah dibuat serta-merta selepas pemasangan.

Unit pertama (bahagian penerbitan)
  • Edisi Standard Windows Server 2019
  • Edisi Pembangun SQL Server 2019 (Edisi Standard atau lebih tinggi diperlukan)
  • SQL Server Management Studio 18.9.1
Unit kedua (bahagian pelanggan)
  • Edisi Standard Windows Server 2019
  • SQL Server 2019 Express Edition
  • SQL Server Management Studio 18.9.1

Tujuan

Walaupun rekod jadual dalam pangkalan data pelayan pertama atau kedua dikemas kini Pastikan rekod jadual pada pelayan masing-masing disegerakkan.

Dengan cara ini, satu di bahagian penerbitan adalah baik, tetapi bahagian pelanggan boleh mempunyai bilangan unit. Ia juga berfungsi dengan berbilang contoh SQL Server pada satu pelayan.

Memasang SQL Server

Memasang SQL Server bukan bahagian utama Petua ini, jadi saya tidak akan pergi ke butiran. Hanya yang berkaitan dengan replikasi disenaraikan.

Memasang bahagian penerbitan memerlukan Standard Edition atau lebih tinggi. Petua ini memasang Edisi Pembangun sebagai persekitaran ujian.

Pelanggan baik-baik saja dengan Express Edition. Sudah tentu, edisi lain baik-baik saja, bergantung pada konfigurasi DB.

Untuk Pemilihan Ciri, pilih Perkhidmatan Enjin Pangkalan Data dan Replikasi SQL Server. Ini adalah sama untuk kedua-dua bahagian penerbitan dan bahagian pelanggan.

Konfigurasi Contoh lalai kepada kedua-dua bahagian penerbitan dan bahagian pelanggan. Walaupun anda menukar nama contoh, perbezaannya ialah sama ada anda menentukan nama contoh dalam spesifikasi pelayan kemudian.

Di bahagian penerbitan, konfigurasikan SQL Server Agent untuk bermula secara automatik. Anda boleh menukar seting ini kemudian.

Petua ini mengesahkan replikasi dengan akaun SQL Server sa. Oleh itu, dayakan pengesahan SQL Server. Jika anda tidak mahu menggunakan akaun sa atas sebab keselamatan, gantikan bahagian pengesahan SQL Server penjelasan kemudian dengan pengesahan Windows atau akaun lain.

Jadikan tetapan ini sama pada kedua-dua pelayan.

Memasang SQL Server Management Studio

Pasang SQL Server Management Studio yang anda muat turun. Oleh kerana skrin pemasangan hanya untuk dipasang, penjelasannya ditinggalkan.

Mulakan semula Windows jika anda digesa untuk memulakan semula selepas pemasangan. Juga, pasang sebarang tampalan dalam Kemas Kini Windows.

Mencipta pangkalan data dan jadual bahagian penerbitan

Jika anda mencipta jadual di bahagian penerbitan, bahagian pelanggan secara automatik meniru jadual atau rekod.

Kaedah penciptaan adalah sama dengan prosedur biasa, jadi saya akan menghilangkan butirannya.

Anda mencipta pangkalan data bernama Publication DB dalam SQL Server Management Studio.

Buat jadual bernama "Pengguna" dan daftarkan lajur seperti berikut: Apa yang anda perlu lakukan ialah menyemak penyegerakan rekod, jadi nama, nombor, dan kandungan lajur jadual boleh menjadi apa-apa. Walau bagaimanapun, hanya kunci utama yang diperlukan.

Tambah beberapa rekod untuk memastikan rekod disegerakkan selepas replikasi dibuat.

Mengkonfigurasikan Sambungan Jauh

Konfigurasikan mereka untuk membenarkan capaian jauh ke pangkalan data pelayan masing-masing. Butiran diringkaskan dalam petua berikut.

Mengesetkan keizinan folder

Pada pelayan di bahagian penerbitan, buka sifat folder berikut: Laluan folder bergantung pada versi SQL Server dan nama contoh.

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

Dari tab Keselamatan, tambahkan akaun "PERKHIDMATAN" dan tetapkannya ke kawalan penuh.

Mengkonfigurasikan Pengedaran

Kali ini, pengedaran dibuat pada pelayan yang sama dengan penerbitan.

Mulakan STUDIO Pengurusan SQL Server, klik kanan Replikasi, dan pilih Konfigurasikan Pengedaran.

Klik Seterusnya.

Semak "Jadikan pelayan anda sendiri > pengedar anda sendiri" <.

Selepas itu, klik "Seterusnya" kerana ia adalah untuk menyelesaikannya.

Mencipta penerbitan

Pada asalnya, ia dicipta daripada ahli sihir seperti yang ditunjukkan dalam rajah berikut, Dalam SQL Server 2019, mencipta daripada bestari tidak mendayakan "langganan boleh diperbaharui" dan tidak membenarkan penyegerakan rekod antara jadual.

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

Berikut adalah SQL untuk mencipta penerbitan dengan pengesahan SQL Server: Sila tukar kata laluan mengikut tetapan 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

Apabila menggunakan pengesahan Windows, tukar bahagian "sp_addlogreader_agent" dan "sp_addpublication_snapshot" seperti berikut.

Pengesahan SQL Server

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

Pengesahihan Windows

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

Jika ia berjaya dicipta, anda akan melihat perkara berikut:

Juga, buka sifat penerbitan yang dibuat dan pastikan "Langganan boleh diperbaharui" didayakan.

Menentukan Artikel

Pada asalnya, jika anda menciptanya dengan ahli sihir, anda akan menentukan artikel pada masa yang sama, Oleh kerana skrip di atas tidak termasuk pemprosesan artikel, ia ditentukan dari harta itu.

Pilih "Artikel" dari menu di sebelah kiri, periksa jadual yang ingin anda segerakkan, dan klik okey butang.

Satu msrepl_tran_version ditambah pada lajur jadual yang akan disegerakkan dan pencetus jadual ditambah pada masa yang sama.

Mencipta langganan

Klik kanan penerbitan yang baru anda buat dan pilih Langganan Baru.

Klik Seterusnya.

Pilih penerbitan yang anda cipta.

Semak Jalankan semua ejen pada nama Pengedar <server>.

Klik butang Tambah Pelanggan SQL Server.

Nyatakan pelayan (+ nama contoh) untuk mendaftar sebagai pelanggan.

Jika anda tidak mempunyai pangkalan data pelanggan, buat yang baru. Sekiranya sudah ada, pilih kerana item pemilihan dipaparkan.

Selepas anda menentukan pangkalan data, klik Seterusnya.

Sekiranya anda mempunyai lebih daripada satu pelanggan, anda boleh mendaftarkan seberapa banyak yang anda perlukan di sini.

Klik butang "...".

Di sini, ejen berjalan di bawah akaun sa, tetapi sila tetapkannya mengikut persekitaran anda.

Pilih Jalankan Secara Berterusan.

Seting "Langganan Boleh Diperbaharui" hendaklah beroperasi.

Dalam kes "perubahan komit pada masa yang sama", ia disegerakkan dengan serta-merta, tetapi semua pelayan mesti berjalan.

"Queue berubah dan komited jika boleh" mengumpul perubahan dalam baris gilir, jadi ia komited apabila pelayan sedang berjalan, walaupun pelayan tidak berjalan. Walau bagaimanapun, masa penyegerakan adalah perlahan.

Semak Gunakan pelayan terpaut atau jauh yang dipratentukan.

Pilih Sekarang.

Klik Seterusnya.

Klik butang Selesai.

Tutup jika tiada ralat.

Selepas beberapa saat, anda dapat melihat bahawa pangkalan data telah dibuat di sisi pelanggan dan jadual juga telah dibuat.

Anda boleh mengesahkan bahawa rekod juga disegerakkan.

Jika ia tidak disegerakkan selepas beberapa ketika, sila lakukan perkara berikut.

Klik kanan langganan yang dibuat dan pilih Reinitialize.

Semak "Gunakan gambar baru" dan klik butang "Tetapkan untuk memulakan semula".

Jika ralat berlaku, cuba lagi.

Semakan operasi

Cuba tambah atau ubah suai jadual di bahagian penerbitan.

Tunggu beberapa saat atau lebih untuk memastikan ia disegerakkan kepada pelanggan.

Sekarang mari kita ubah suai rekod di sisi pelanggan.

Anda boleh mengesahkan bahawa ia disegerakkan ke bahagian penerbitan.

Sekiranya anda mempunyai banyak pelanggan yang didaftarkan, pastikan mereka disegerakkan antara pelanggan.