Activați reproducerea tranzacțională abonamente regenerabile în SQL Server 2019

Data creării paginii :

Introducere și precauții

Acest articol este destinat reproducerii în SQL Server 2019. Una dintre funcțiile din acesta este activată "abonament reînnoibil".

Această caracteristică a fost activată în mod implicit în versiunile anterioare de SQL Server, dar a fost dezactivată din (probabil) 2017.

Versiunile viitoare de SQL Server poate elimina această caracteristică. Cu excepția modernizării unui mediu existent, vă recomandăm să îl înlocuiți cu o construcție nouă cu replicare a îmbinării etc.

referință

mediu

Utilizați două servere, un server și două SQL Server. Windows Server este într-o stare în care nu s-au făcut setări suplimentare imediat după instalare.

Unitatea 1 (partea de publicare)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Developer Edition (Standard Edition sau mai mare necesare)
  • SQL Server Management Studio 18.9.1
A doua unitate (partea abonatului)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Express Edition
  • SQL Server Management Studio 18.9.1

scop

Chiar dacă înregistrările de tabel din prima sau a doua bază de date de server sunt actualizate Asigurați-vă că înregistrările de tabel de pe serverele celuilalt sunt sincronizate.

Apropo, unul pe partea de publicare este bine, dar partea de abonat poate avea orice număr de unități. De asemenea, funcționează cu mai multe instanțe de SQL Server pe un singur server.

Instalarea SQL Server

Instalarea SQL Server nu este partea principală a acestor sfaturi, așa că nu voi intra în detalii. Sunt listate numai cele relevante pentru replicare.

Instalarea părții de publicare necesită Standard Edition sau mai mare. Acest Sfaturi instalează Developer Edition ca mediu de testare.

Abonații sunt bine cu Express Edition. Desigur, alte ediții sunt în regulă, în funcție de configurația DB.

Pentru selectarea caracteristicilor, selectați Database Engine Service și SQL Server Replication. Acest lucru este același atât pentru partea de publicare, cât și pentru partea de abonat.

Configurare instanță implicită atât pentru partea de publicare, cât și pentru partea de abonat. Chiar dacă modificați numele instanței, diferența este dacă specificați sau nu numele instanței în specificația serverului mai târziu.

Pe partea de publicare, configurați SQL Server Agent pentru a porni automat. Puteți modifica această setare mai târziu.

Acest sfat autentifică reproducerea cu contul SQL Server sa. De aceea, activați autentificarea SQL Server. Dacă nu doriți să utilizați contul SA din motive de securitate, înlocuiți partea de autentificare SQL Server a explicației mai târziu cu autentificarea Windows sau alt cont.

Faceți această setare la fel pe ambele servere.

Instalarea SQL Server Management Studio

Instalați SQL Server Management Studio pe care l-ați descărcat. Deoarece ecranul de instalare este doar pentru a instala, explicația este omisă.

Reporniți Windows dacă vi se solicită să reporniți după instalare. De asemenea, instalați orice patch-uri în Windows Update.

Crearea unei baze de date și a tabelelor pe partea de publicare

Dacă creați un tabel pe partea de publicare, partea abonat reproduce automat tabelul sau înregistrarea.

Metoda de creație este aceeași cu procedura normală, așa că voi omite detaliile.

Creați o bază de date denumită publicație DB în SQL Server Management Studio.

Creați un tabel numit "Utilizatori" și înregistrați coloanele după cum urmează: Tot ce trebuie să faceți este să verificați sincronizarea înregistrărilor, astfel încât numele, numărul și conținutul coloanei din tabel să poată fi orice. Cu toate acestea, este necesară numai cheia primară.

Adăugați câteva înregistrări pentru a vă asigura că înregistrările sunt sincronizate după crearea reproducerii.

Configurarea conexiunilor la distanță

Configurați-le pentru a permite accesul de la distanță la bazele de date ale serverelor celuilalt. Detaliile sunt rezumate în următoarele sfaturi.

Setarea permisiunilor folderului

Pe server pe partea de publicare, deschideți proprietățile următorului folder: Calea folderului depinde de versiunea de SQL Server și numele instanței.

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

Din fila Securitate, adăugați contul "SERVICIU" și setați-l la control complet.

Configurarea distribuției

De data aceasta, distribuția este creată pe același server ca publicația.

Porniți SQL Server Management Studio, faceți clic dreapta pe reproducere și selectați Configurare distribuire.

Faceți clic pe Următorul.

Verificați < "Faceți-vă propriul server > propriul distribuitor".

După aceea, faceți clic pe "Următorul", așa cum este pentru a-l finaliza.

Crearea unei publicații

Inițial, este creat din expert așa cum se arată în figura următoare, În SQL Server 2019, crearea dintr-un expert nu activează "abonamente regenerabile" și nu permite sincronizarea înregistrărilor între tabele.

Prin urmare, folosim T-SQL pentru a crea publicația aici.

Următorul este SQL pentru crearea unei publicații cu autentificare SQL Server: Vă rugăm să schimbați parola în funcție de setările dvs.

-- トランザクションパブリケーションを追加するための宣言
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

Când utilizați autentificarea Windows, modificați părțile "sp_addlogreader_agent" și "sp_addpublication_snapshot", după cum urmează.

Autentificare SQL Server

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

Autentificare Windows

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

Dacă este creat cu succes, veți vedea următoarele:

De asemenea, deschideți proprietățile publicației create și asigurați-vă că este activat "Abonament reînnoibil".

Specificarea articolelor

Inițial, dacă îl creați cu un expert, veți specifica articolul în același timp, Deoarece script-ul de mai sus nu include procesarea articolului, acesta este specificat din proprietate.

Selectați "Articole" din meniul din stânga, verificați tabelul pe care doriți să îl sincronizați și faceți clic pe ok buton.

Un msrepl_tran_version este adăugat la coloanele tabelului care urmează să fie sincronizate și se adaugă un declanșator de tabel în același timp.

Crearea unui abonament

Faceți clic dreapta pe publicația pe care tocmai ați creat-o și selectați Abonament nou.

Faceți clic pe Următorul.

Selectați publicația pe care ați creat-o.

Bifați Rulați toți agenții pe numele distribuitorului < server>.

Faceți clic pe butonul Adăugare abonat SQL Server.

Specifică serverul (+ numele instanței) pentru a vă înregistra ca abonat.

Dacă nu aveți o bază de date pentru abonați, creați una nouă. Dacă există deja, selectați-l deoarece se afișează elementul de selecție.

După ce specificați baza de date, faceți clic pe Următorul.

Dacă aveți mai mulți abonați, puteți înregistra câte aveți nevoie aici.

Faceți clic pe butonul "..." .

Aici, agentul rulează sub contul sa, dar vă rugăm să-l setați în funcție de mediul dvs.

Selectați Executare continuă.

Setarea "Abonament reînnoibil" ar trebui să fie operațională.

În cazul "comite modificări în același timp", acesta este sincronizat imediat, dar toate serverele trebuie să ruleze.

"Coada se schimbă și se angajează dacă este posibil" acumulează modificări în coadă, astfel încât acestea sunt comise atunci când serverul se execută, chiar dacă serverul nu se execută. Cu toate acestea, sincronizarea este lentă.

Bifați Utilizați un server predefinit legat sau la distanță.

Selectați Acum.

Faceți clic pe Următorul.

Faceți clic pe butonul Terminare.

Închideți dacă nu există erori.

După câteva momente, puteți vedea că baza de date a fost creată pe partea de abonat și că tabelele au fost, de asemenea, create.

Puteți verifica dacă înregistrările sunt, de asemenea, sincronizate.

Dacă nu se sincronizează după un timp, vă rugăm să faceți următoarele.

Faceți clic dreapta pe abonamentul creat și selectați Reinitialize.

Verificați "Utilizați un instantaneu nou" și faceți clic pe butonul "Setați să reinițializați".

Dacă apare o eroare, încercați din nou.

Verificarea funcționării

Încercați să adăugați sau să modificați tabele pe partea de publicare.

Așteptați câteva secunde sau cam asa ceva pentru a vă asigura că este sincronizat cu abonatul.

Acum, să modificăm înregistrarea pe partea de abonat.

Puteți verifica dacă este sincronizat cu partea de publicare.

Dacă aveți mai mulți abonați înregistrați, asigurați-vă că aceștia sunt sincronizați între abonați.