Įgalinti operacijų replikavimo iš naujo prenumeratas "SQL Server 2019"
Įvadas ir atsargumo priemonės
Šis straipsnis skirtas replikacijai "SQL Server 2019". Viena iš jame esančių funkcijų yra įjungta "atsinaujinanti prenumerata".
Ši funkcija pagal numatytuosius nustatymus buvo įgalinta ankstesnėse SQL serverio versijose, tačiau nuo 2017 m. (tikriausiai) išjungta.
Būsimos SQL serverio versijos gali pašalinti šią funkciją. Išskyrus esamos aplinkos atnaujinimą, rekomenduojame ją pakeisti nauja konstrukcija su suliejimo replikacija ir pan.
- Nuoroda
Aplinkos
Naudokite du serverius, vieną serverį ir du SQL serverį. "Windows Server" yra tokioje būsenoje, kai iš karto po įdiegimo nebuvo atlikti jokie papildomi parametrai.
- 1-asis vienetas (leidinio pusėje)
-
- "Windows Server 2019 Standard Edition"
- "SQL Server 2019 Developer Edition" (reikalingas standartinis leidimas arba naujesnė versija)
- SQL serverio valdymo studija 18.9.1
- Antrasis įrenginys (abonento pusėje)
-
- "Windows Server 2019 Standard Edition"
- "SQL Server 2019 Express Edition"
- SQL serverio valdymo studija 18.9.1
Tikslas
Net jei lentelės įrašai pirmojoje arba antrojoje serverio duomenų bazėse atnaujinami Įsitikinkite, kad lentelės įrašai vienas kito serveriuose yra sinchronizuojami.
Beje, vienas leidinio pusėje yra gerai, tačiau abonento pusėje gali būti bet koks vienetų skaičius. Jis taip pat veikia su keliais SQL serverio egzemplioriais viename serveryje.
Diegiamas SQL serveris
SQL serverio diegimas nėra pagrindinė šių patarimų dalis, todėl nesigilinsiu į detales. Išvardyti tik tie, kurie susiję su replikacija.
Norint įdiegti leidinio pusę, reikia "Standard Edition" arba naujesnės versijos. Šis patarimas įdiegia "Developer Edition" kaip bandomąją aplinką.
Prenumeratoriai puikiai tinka "Express Edition". Žinoma, kiti leidimai yra gerai, priklausomai nuo DB konfigūracijos.
Norėdami pasirinkti funkciją, pasirinkite Duomenų bazės modulio tarnyba ir SQL serverio replikacija. Tas pats pasakytina ir apie publikaciją, ir apie prenumeratorių pusę.
Egzemplioriaus konfigūracija numatyta tiek leidinio, tiek prenumeratoriaus pusėje. Net jei pakeisite egzemplioriaus pavadinimą, skirtumas yra tas, ar vėliau nurodote egzemplioriaus pavadinimą serverio specifikacijoje.
Leidinio pusėje sukonfigūruokite SQL serverio agentą, kad jis būtų paleistas automatiškai. Šį parametrą galite pakeisti vėliau.
Šis patarimas autentifikuoja replikaciją naudojant SQL Server sa abonementą. Todėl įjunkite SQL serverio autentifikavimą. Jei saugos sumetimais nenorite naudoti sa abonemento, vėliau pakeiskite paaiškinimo SQL serverio autentifikavimo dalį "Windows" autentifikavimu arba kitu abonementu.
Padarykite šį parametrą tą patį abiejuose serveriuose.
Diegiama SQL serverio valdymo studija
Įdiekite atsisiųstą SQL serverio valdymo studiją. Kadangi diegimo ekranas skirtas tik įdiegti, paaiškinimas praleidžiamas.
Paleiskite sistemą Windows iš naujo, jei po įdiegimo būsite paraginti paleisti iš naujo. Be to, įdiekite visus pataisymus "Windows Update".
Publikavimo duomenų bazės ir lentelių kūrimas
Jei leidinio pusėje kuriate lentelę, prenumeratoriaus pusė automatiškai atkartoja lentelę arba įrašą.
Kūrimo būdas yra toks pat, kaip ir įprasta procedūra, todėl praleisiu detales.
SQL serverio valdymo studijoje kuriate duomenų bazę, pavadintą "Publication DB".
Sukurkite lentelę pavadinimu "Vartotojai" ir užregistruokite stulpelius taip: Viskas, ką jums reikia padaryti, tai patikrinti įrašų sinchronizavimą, kad lentelės pavadinimas, numeris ir stulpelio turinys galėtų būti bet koks. Tačiau reikalingas tik pirminis raktas.
Įtraukite kelis įrašus, kad įsitikintumėte, jog sukūrus replikaciją įrašai sinchronizuojami.
Nuotolinių ryšių konfigūravimas
Konfigūruokite juos, kad galėtumėte nuotoliniu būdu pasiekti vienas kito serverių duomenų bazes. Išsami informacija apibendrinama šiuose patarimuose.
Aplanko teisių nustatymas
Leidinio pusėje esančiame serveryje atidarykite šio aplanko ypatybes: Aplanko maršrutas priklauso nuo SQL serverio versijos ir egzemplioriaus pavadinimo.
- C:\Program Files\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData
Skirtuke Sauga įtraukite paskyrą "PASLAUGA" ir nustatykite, kad ji būtų visiškai valdoma.
Paskirstymo konfigūravimas
Šį kartą platinimas sukuriamas tame pačiame serveryje kaip ir leidinys.
Paleiskite SQL serverio valdymo studiją, dešiniuoju pelės mygtuku spustelėkite Replikacija ir pasirinkite Konfigūruoti paskirstymą.
Spustelėkite Pirmyn.
Patikrinkite < "Padarykite savo serverį > savo platintoją".
Po to spustelėkite "Kitas", nes jis turi būti baigtas.
Leidinio kūrimas
Iš pradžių jis sukuriamas iš vedlio, kaip parodyta toliau pateiktame paveikslėlyje, "SQL Server 2019" kūrimas iš vedlio neleidžia "atsinaujinančios prenumeratos" ir neleidžia sinchronizuoti įrašų tarp lentelių.
Todėl mes naudojame T-SQL, kad sukurtume leidinį čia.
Toliau pateikiamas SQL, skirtas leidiniui su SQL serverio autentifikavimu kurti: Pakeiskite slaptažodį pagal nustatymus.
-- トランザクションパブリケーションを追加するための宣言
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
Naudodami "Windows" autentifikavimą, pakeiskite dalis "sp_addlogreader_agent" ir "sp_addpublication_snapshot" taip:
SQL serverio autentifikavimas
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
"Windows" autentifikavimas
@job_login = @login,
@job_password = @password,
@publisher_security_mode = 1;
Jei jis bus sukurtas sėkmingai, pamatysite:
Taip pat atidarykite sukurto leidinio ypatybes ir įsitikinkite, kad įjungta "Atsinaujinančios prenumeratos prenumerata".
Straipsnių nurodymas
Iš pradžių, jei jį sukursite naudodami vedlį, tuo pačiu metu nurodysite straipsnį, Kadangi pirmiau pateiktame scenarijuje nėra straipsnio apdorojimo, jis nurodomas iš nuosavybės.
Kairėje esančiame meniu pasirinkite "Straipsniai", patikrinkite lentelę, kurią norite sinchronizuoti, ir spustelėkite mygtuką Gerai.
Prie sinchronizuotinos lentelės stulpelių pridedamas msrepl_tran_version ir tuo pačiu metu pridedamas lentelės paleidiklis.
Prenumeratos kūrimas
Dešiniuoju pelės mygtuku spustelėkite ką tik sukurtą leidinį ir pasirinkite Nauja prenumerata.
Spustelėkite Pirmyn.
Pasirinkite sukurtą leidinį.
Patikrinkite, kaip paleisti visus platintojo agentus <servatoriaus vardas>.
Spustelėkite mygtuką Įtraukti SQL serverio prenumeratorių.
Nurodo serverį (+ egzemplioriaus pavadinimą), kurį norite registruoti kaip abonentą.
Jei neturite prenumeratorių duomenų bazės, sukurkite naują. Jei jis jau yra, pasirinkite jį, nes rodomas pasirinkimo elementas.
Nurodę duomenų bazę, spustelėkite Pirmyn.
Jei turite daugiau nei vieną abonentą, čia galite užregistruoti tiek, kiek jums reikia.
Spustelėkite mygtuką "..."
Čia agentas veikia pagal SA paskyrą, tačiau nustatykite ją pagal savo aplinką.
Pasirinkite Vykdyti nepertraukiamai.
"Atsinaujinančios energijos prenumeratos" nustatymas turėtų veikti.
"Atlikite pakeitimus tuo pačiu metu", jis nedelsiant sinchronizuojamas, tačiau visi serveriai turi būti paleisti.
"Eilės keitimas ir įsipareigojimas, jei įmanoma" kaupia pakeitimus eilėje, todėl jie yra įsipareigoję, kai serveris veikia, net jei serveris neveikia. Tačiau sinchronizavimo laikas yra lėtas.
Pažymėkite Naudoti iš anksto nustatytą susietą arba nuotolinį serverį.
Pasirinkite Dabar.
Spustelėkite Pirmyn.
Spustelėkite mygtuką Baigti.
Uždarykite, jei nėra klaidų.
Po kelių akimirkų galite pamatyti, kad duomenų bazė buvo sukurta prenumeratoriaus pusėje ir kad lentelės taip pat buvo sukurtos.
Galite patikrinti, ar įrašai taip pat sinchronizuojami.
Jei po kurio laiko jis nesinchronizuojamas, atlikite šiuos veiksmus.
Dešiniuoju pelės mygtuku spustelėkite sukurtą prenumeratą ir pasirinkite Iš naujo nustatyti.
Pažymėkite "Naudoti naują momentinę kopiją" ir spustelėkite mygtuką "Nustatyti, kad iš naujo apibrėžtumėte".
Jei įvyksta klaida, bandykite dar kartą.
Operacijos tikrinimas
Pabandykite įtraukti arba modifikuoti lenteles leidinio pusėje.
Palaukite kelias sekundes, kad įsitikintumėte, jog jis sinchronizuotas su abonentu.
Dabar pakeiskime įrašą prenumeratoriaus pusėje.
Galite patikrinti, ar jis sinchronizuotas su leidinio puse.
Jei užregistravote kelis abonentus, įsitikinkite, kad jie sinchronizuojami tarp abonentų.