Articles

SQLShack

volumul de date reținute, gestionate și accesate astăzi este fără precedent. Companiile se așteaptă ca departamentul IT să păstreze datele online și accesibile la nesfârșit, punând o presiune intensă asupra bazelor de date necesare stocării și gestionării acestora. Pentru a răspunde nevoilor actuale; trebuie să înlocuim procesele învechite și ineficiente cu tehnici noi, mai agile. Replicarea SQL Server este una dintre tehnicile pentru a satisface astfel de cerințe.

  • notă: Pentru a afla mai multe despre replicarea bazelor de date, vă rugăm să citiți diferite părți interesate, opinii diferite: de ce gestionarea bazelor de date necesită o abordare sistematică articol.

în acest articol, să vă modelați înțelegerea topografiei complete de replicare SQL Server, inclusiv componente, interne și SQL pentru a le lega împreună. După ce ați terminat de citit acest articol, veți înțelege:

  • replicarea SQL Server, în general
  • componente ale replicării tranzacționale SQL Server, în special
  • cum să obțineți proprietățile distribuitorului
  • cum să găsiți editorul folosind același distribuitor
  • care sunt bazele de date utilizate pentru replicarea SQL Server
  • topologia generală a unui mediu de replicare
  • care sunt articolele care sunt mapate la tipul modelului de replicare SQL Server
  • cum să obțineți detalii publicare
  • cum să obțineți detalii de abonament
  • agenți de replicare SQL Server
  • și mai mult…

replicare

SQL Server replicarea este o tehnologie pentru copierea și distribuirea de date și obiecte de baze de date de la o bază de date la alta și apoi sincronizarea între baze de date pentru a menține coerența și integritatea datelor. În majoritatea cazurilor, replicarea este un proces de reproducere a datelor la țintele dorite. Replicarea SQL Server este utilizată pentru copierea și sincronizarea datelor în mod continuu sau poate fi, de asemenea, programată să ruleze la intervale prestabilite. Există mai multe tehnici de replicare diferite care acceptă o varietate de abordări de sincronizare a datelor; unidirecțional; unu-la-mulți; mulți-la-unu; și bidirecțional și păstrează mai multe seturi de date sincronizate între ele.

componente tranzacționale de replicare SQL Server

următoarea diagramă prezintă componentele replicării tranzacționale SQL Server.

inclusiv replicarea SQL Server …

  • Publisher
  • baza de date de publicare
  • publicare
  • articole
  • distribuitor
  • baza de date de distribuție
  • abonat
  • baza de date de abonament
  • abonament
  • agenți de replicare

diagrama de replicare SQL Server

articol

un articol este unitatea de bază a replicării SQL Server. Un articol poate consta din tabele, proceduri stocate și vizualizări. Este posibil să scalați articolul, orizontal și vertical folosind o opțiune de filtrare. De asemenea, putem crea mai multe articole pe același obiect cu unele restricții și limitări.

folosind expertul de publicare nouă, articolul poate fi navigat. Ne permite să vizualizăm proprietățile unui articol și să oferim opțiuni pentru a seta proprietăți pentru articole. În unele cazuri, proprietățile pot fi setate în timpul creării publicării și este o proprietate numai în citire.

după crearea unei publicații de replicare SQL Server, de exemplu, dacă o anumită proprietate necesită o modificare, aceasta va necesita, la rândul său, generarea unui nou instantaneu de replicare. Dacă publicația are unul sau mai multe abonamente, atunci modificarea necesită Reinițializarea tuturor abonamentelor. Pentru mai multe informații, consultați Cum se adaugă/picătură articole la/de la publicarea existente în articolul SQL Server.

pentru a lista toate articolele publicate, executați următoarele T-SQL

1
2
3
4
5
6
7
8
9
10
11
12

selectați
pub.
,Art.
,Art.
,Art.
,Art.
din
.. Arta
se alăture interior .. Pub
pe Art. = Pub.
ORDER BY
Pub., Art.

To get the details of articles in transactional or merge SQL Server replication in a published database, run the following T-SQL.

1
2
3
4
5
6
7
8

SELECT st.name , st.schema_id, st.is_published , st.is_merge_published, is_schema_published
din sys.tabele st unde st.is_published = 1 sau st.is_merge_published = 1 sau st.is_schema_published = 1
Uniune
selectați sp.name, sp.schema_id, 0, 0, sp. is_schema_published
din sys.proceduri sp unde sp. is_schema_published = 1
Uniune
selectați sv.name, sv.schema_id, 0, 0, SV. is_schema_published
din sys.vizualizări SV unde SV. is_schema_published = 1;

To get detailed information about an article in the listed publisher, run the following T-SQL

1
2
3
4
5
6
7

DECLARE @publication AS sysname;
SET @publication = N’PROD_HIST_Pub’;
USE MES_PROD_AP
EXEC sp_helparticle
@publication = @publication;
GO

To get column level details, run the following T-SQL

1
2
3

USE MES_PROD_AP
GO
sp_helparticlecolumns @publication = N’PROD_HIST_Pub’ , @article = ‘tb_Branch_Plant’

pentru a lista coloanele care sunt publicate în replicarea tranzacțională în baza de date a publicațiilor, executați următoarele T-SQL

1
selectați object_name(object_id) , nume din sys.coloane sc unde sc. is_replicated = 1;

publicații

o publicație este o colecție logică de articole dintr-o bază de date. Entitatea ne permite să definim și să configurăm proprietățile articolului la nivelul superior, astfel încât proprietățile să fie moștenite tuturor articolelor din acel grup.

1
exec sp_helppublication;

Publisher database

publisher este o bază de date care conține o listă de obiecte care sunt desemnate ca SQL Server replicare articolele sunt cunoscute ca publicarea bazei de date. Editorul poate avea una sau mai multe publicații. Fiecare editor definește un mecanism de propagare a datelor prin crearea mai multor proceduri stocate de replicare internă.

1
2
3

USE Distribution
GO
select * from MSpublications

Publisher

The Publisher is a database instance that makes data available to other locations through SQL Server replication. Editorul poate avea una sau mai multe publicații, fiecare definind un set logic de obiecte și date de reprodus.

distribuitor

distribuitorul este o bază de date care acționează ca un depozit pentru replicarea datelor specifice asociate cu unul sau mai mulți editori. În multe cazuri, distribuitorul este o singură bază de date care acționează atât ca Editor, cât și ca distribuitor. În contextul replicării SQL Server, acest lucru este cunoscut în mod obișnuit ca „distribuitor local”. Pe de altă parte, dacă este configurat pe un server separat, atunci este cunoscut sub numele de „distribuitor la distanță”. Fiecare Editor este asociat cu o singură bază de date cunoscută sub numele de „bază de date de distribuție” aka „distribuitor”.

baza de date de distribuție identifică și stochează datele de stare a replicării SQL Server, metadatele despre publicație și, în unele cazuri, acționează ca o coadă pentru trecerea datelor de la editor la abonați.

în funcție de modelul de replicare, distribuitorul ar putea fi, de asemenea, responsabil pentru notificarea abonaților care s-au abonat la o publicație că un articol s-a schimbat. De asemenea, baza de date de distribuție menține integritatea datelor.

baze de date de distribuție

fiecare Distribuitor trebuie să aibă cel puțin o bază de date de distribuție. Baza de date de distribuție constă din Detalii articol, replicare meta-date și date. Un distribuitor poate deține mai multe baze de date de distribuție; cu toate acestea, toate publicațiile definite pe un singur editor trebuie să utilizeze aceeași bază de date de distribuție.

pentru a afla dacă …

  • un server este distribuitor sau nu?

    1
    SELECT @@ServerName Servername, case when is_distributor=1 then ‘Yes’ else ‘No’ end status FROM sys.servers WHERE name=’repl_distributor’ AND data_source=@@servername;

  • a distribution database installed or not?

    1
    SELECT name FROM sys.databases WHERE is_distributor = 1
  • a Publisher is using this Distributor or not?

    1
    EXEC sp_get_distributor

  • or just to interrogate various Distributor and Distribution database properties?

    1
    2
    3

    EXEC sp_helpdistributor;
    EXEC sp_helpdistributiondb;
    EXEC sp_helpdistpublisher;

Subscriber

A database instance that consumes SQL Server replication data from a publication is called a Subscriber. Abonatul poate primi date de la unul sau mai mulți editori și publicații. Abonatul poate, de asemenea, să transmită modificările de date editorului sau să republice datele altor abonați, în funcție de tipul de design și model de replicare.

1
exec sp_helpsubscriberinfo;

abonamente

un abonament este o cerere pentru ca o copie a unei publicații să fie livrată unui Abonat. Abonamentul definește ce date de publicare vor fi primite, unde și când.

există două tipuri de abonamente: abonamente push și abonamente pull

  • abonament Push: distribuitorul actualizează direct datele din Baza de date a abonaților
  • abonament Pull: Abonatul este programat să verifice la Distribuitor în mod regulat dacă sunt disponibile modificări noi și apoi actualizează datele din Baza de date a abonamentului.
1
exec sp_helpsubscription;

baze de date de abonament

o bază de date țintă a unui model de replicare se numește bază de date de abonament.

agenți de replicare

SQL Server replicare utilizează un set predefinit de programe independente și evenimente sunt cunoscute ca agenți, pentru a efectua sarcinile asociate cu date. În mod implicit, agenți de replicare SQL Server rula ca joburi programate sub SQL Server Agent. Agenții de replicare pot fi, de asemenea, executați din linia de comandă și de aplicații care utilizează obiecte de gestionare a replicării (RMO). Agenții de replicare SQL Server pot fi monitorizați și administrați utilizând Replication Monitor și SQL Server Management Studio.

replication snapshot Agent

replication snapshot Agent este utilizat cu toate tipurile de tehnologie de replicare SQL Server, deoarece furnizează setul de date necesar pentru a efectua sincronizarea inițială a datelor bazei de date de publicare cu baza de date de abonament. Se pregătește schema și datele inițiale ale articolelor publicate, fișiere instantaneu, și înregistrează informații despre tipul de sincronizare în baza de date de distribuție.

Agent cititor jurnal

agentul cititor Jurnal este utilizat numai cu replicare tranzacțională. Mută tranzacțiile de replicare din jurnalul de tranzacții online al bazei de date de publicare în baza de date de distribuție.

agent de distribuție

agentul de distribuție este utilizat numai cu replicarea instantanee și replicarea tranzacțională SQL Server. Acest agent aplică instantaneul de replicare inițială la baza de date de abonament și mai târziu, modificările de date sunt urmărite și înregistrate în baza de date de distribuție și aplicate la baza de date de abonament.

Merge Agent

agentul Merge este utilizat cu modelul de replicare merge. În mod implicit, agentul de îmbinare încarcă modificările de la abonat la editor și apoi descarcă modificările de la editor la abonat. Fiecare abonament are propriul agent de îmbinare care se conectează atât la Editor, cât și la abonat și le actualizează pe ambele. Agentul Merge rulează fie la distribuitor pentru abonamente push, fie la abonat pentru abonamente pull. Aici, sincronizarea este bidirecțională. Conflictele de date sunt gestionate de un set de declanșatoare care acceptă întregul proces

rezumat

până acum, am văzut o trecere prin unele dintre conceptele importante de replicare SQL Server. De asemenea, scripturile T-SQL sunt afișate pentru a interoga tabelele de sistem și procedurile stocate de replicare pentru a răspunde la cea mai mare parte a întrebării frecvente despre replicarea SQL Server.

voi discuta mai multe despre replicarea SQL Server în articolele viitoare. Dacă vă simțiți, ceva poate fi îmbunătățită în acest articol, nu ezitați să lăsați un comentariu de mai jos…

cuprins

SQL Server replicare: Prezentare generală a componentelor și topografie

SQL replicare: configurare de bază și configurare

Cum de a adăuga/picătură articole din publicațiile existente în SQL Server

Cum de a face o rapid estimat compara de date în două baze de Date

SQL Server replicare tranzacțională: Cum să reinițializați un abonament folosind o copie de rezervă a bazei de date SQL Server

cum să configurați un model personalizat de replicare a tranzacțiilor SQL Server cu un abonat Central și mai multe baze de date Editor

cum să configurați replicarea tranzacțională SQL Server personalizată cu un editor central și baze de date cu mai mulți abonați

cum să configurați o soluție de replicare tranzacțională DDL și DML SQL Server p>

migrații de baze de date SQL Server cu zero pierderi de date și zero downtime

utilizarea de replicare a datelor tranzacționale pentru a reda și de testare sarcini de producție pe un server de așteptare

cum de a seta SQL Server replicare de baze de date pentru un server de raportare

SQL Server replicare tranzacțională: Cum de a reinițializa un abonament folosind un „suport de replicare numai” –TBA

SQL Server de monitorizare replicare și setarea alerte folosind PowerShell –TBA

  • autor
  • Posturi recente
Prashanth Jayaram
sunt un tehnolog baza de date cu 11+ ani de experiență bogată, hands-on pe tehnologii de baze de date. Sunt Microsoft Certified Professional și susținut cu o diplomă în Master of Computer Application.
specialitatea mea constă în proiectarea& implementarea soluțiilor de înaltă disponibilitate și migrarea DB pe mai multe platforme. Tehnologiile care lucrează în prezent sunt SQL Server, PowerShell, Oracle și MongoDB.
Vizualizați toate postările lui Prashanth Jayaram

Prashanth Jayaram
ultimele postări ale lui Prashanth Jayaram (vezi toate)
  • o prezentare rapidă a auditului bazei de date în SQL – 28 Ianuarie 2021
  • cum să configurați sincronizarea datelor Azure între bazele de date Azure SQL și sql server local-20 ianuarie 2021
  • cum se efectuează operațiuni de import/export de baze de date Azure SQL folosind PowerShell – 14 ianuarie 2021