La replica di SQL Server è una delle funzionalità di sincronizzazione dei dati utilizzata per copiare e distribuire gli oggetti e i dati del database di SQL Server tra i database che si trovano nella stessa istanza di SQL Server o in istanze diverse e sincronizzarli tra questi database per mantenerli in modo coerente stato.
Componenti di replica di SQL Server
La replica di SQL Server è costituita dai seguenti componenti principali:
- Articoli :la tabella del database, le stored procedure o le viste considerate come l'unità di base della replica di SQL Server.
- Distributore :l'istanza di SQL Server che contiene la Distribuzione database, che memorizza i metadati e la cronologia della replica. Tieni presente che l'editore può essere assegnato a un solo Distributore, ma il Distributore può servire più editori.
- Editore :l'istanza di SQL Server che contiene il database di origine e rende i dati disponibili per essere distribuiti alle altre posizioni.
- Abbonato :l'istanza di SQL Server che riceve i dati di replica SQL dai server di pubblicazione e li applica al database di destinazione e trasmette le modifiche ai dati al server di pubblicazione in alcuni tipi di replica.
- Agente per snapshot di replica :questo agente è responsabile della sincronizzazione iniziale in tutti i tipi di replica che fornisce una copia completa degli articoli del database dell'editore all'abbonato.
- Agente per la lettura dei log :questo agente viene utilizzato per replicare continuamente le transazioni dall'editore all'abbonato nella replica transazionale, leggendo il registro delle transazioni del database di origine.
- Agente di distribuzione :questo agente viene utilizzato per applicare lo snapshot iniziale al database di destinazione e tenere traccia e applicare le modifiche continue dei dati al database di destinazione. Questo agente viene utilizzato solo con le repliche Transazionale e Snapshot.
- Agente di fusione :questo agente è responsabile della copia delle modifiche dall'abbonato all'editore, quindi di tutte le modifiche dall'editore all'abbonato, in entrambi i modi. Questo agente viene utilizzato solo con la replica Unisci.
Tipi di replica di SQL Server
SQL Server ci fornisce diversi tipi di replica che possono essere utilizzati per la distribuzione dei dati, in base ai requisiti di sincronizzazione dei dati. Tutti i tipi di replica SQL avviano la sincronizzazione iniziale tra il Publisher e il Sottoscrittore copiando uno snapshot di tutti i dati dal Publisher al Sottoscrittore. Questi tipi di replica di SQL Server includono:
- Replica transazionale :in questo tipo di replica, tutte le modifiche eseguite sul lato dell'editore verranno consegnate e applicate direttamente sul lato dell'abbonato. Un esempio di replica transazionale è lo scenario di integrazione dei dati tra siti diversi.
- Replica snapshot :In questo tipo di replica, uno snapshot viene prelevato dall'editore e applicato all'abbonato una volta, senza distribuire le modifiche continue dopo lo snapshot, fino alla sincronizzazione successiva, in cui un nuovo snapshot verrà copiato e applicato nuovamente all'abbonato.
- Unisci replica :in questo tipo di replica, le modifiche possono essere eseguite e sincronizzate sia sul lato dell'editore che dell'abbonato e sincronizzate quando l'abbonato è connesso alla rete. Un esempio dell'utilizzo di Merge Replication è lo scambio di dati tra gli utenti dell'applicazione Point of Sale.
- Replica peer to peer :un tipo speciale di replica transazionale in cui l'editore distribuisce le modifiche ai dati a più abbonati contemporaneamente.
- Replica bidirezionale :un altro tipo speciale di replica transazionale in cui entrambi i server agiscono come editore e abbonato e si scambiano dati tra loro.
Requisiti per la replica di SQL Server
Prima di impostare e configurare il sito di replica SQL, è necessario assicurarsi che i seguenti punti siano verificati:
- Il componente Replica di SQL Server viene installato in tutti i server partecipanti, l'editore, l'abbonato e il distributore. Deve essere installato durante l'installazione dell'istanza di SQL Server o aggiunto all'istanza SQL esistente in un secondo momento, utilizzando l'Installazione guidata di SQL Server, come illustrato di seguito:
- C'è spazio sufficiente sui server per la creazione dello snapshot, i dati del database pubblicati nell'abbonato e la crescita del log delle transazioni del database del Publisher.
- L'agente SQL Server è attivo e funzionante, in modo che gli agenti di replica del server SQL siano in grado di creare i processi dell'agente SQL correlati e che i processi vengano eseguiti senza alcun problema.
- Vi è una larghezza di banda di rete sufficiente tra le istanze di SQL Server partecipanti.
- Le istanze dell'editore, del distributore e dell'abbonato possono raggiungersi e le porte TCP su cui queste istanze SQL sono in ascolto vengono aperte nelle regole del firewall. In altre parole, siamo in grado di connetterci a ciascuna istanza SQL dalle altre istanze senza alcun problema di rete o connettività.
- Gli articoli del database dell'editore che verranno replicati dovrebbero avere un vincolo di chiave primaria precedentemente definito, al fine di mantenere l'unicità dei dati.
- L'account che verrà utilizzato per creare il sito di replica ed eseguire gli agenti di replica deve essere almeno un membro del ruolo database fisso db_owner su entrambi i database Publisher, Distributore e Sottoscrittore, oltre all'autorizzazione di lettura e scrittura su la cartella delle istantanee.
Per iniziare
In questo articolo mostreremo come utilizzare il tipo di replica transazionale per replicare le tabelle del database AdventureWorks2017 tra due istanze di SQL Server; SQL1 istanza che fungerà da distributore e editore e SQL2 istanza che fungerà da Abbonato.
La replica transazionale di SQL Server verrà configurata in tre passaggi:
- Configura il Distributore.
- Configura l'editore.
- Configura l'abbonato
Discutiamo questi passaggi in dettaglio.
Configura il distributore
Per configurare il distributore, connettiti a "SQL1 "Istanza di SQL Server che fungerà da distributore, che è la stessa istanza di Publisher nel nostro esempio qui, sfoglia il nodo Replica in Esplora oggetti SSMS, fai clic con il pulsante destro del mouse su Replica nodo e scegli Configura distribuzione … opzione, come mostrato di seguito:
La prima finestra che verrà visualizzata nella procedura guidata Configura distribuzione è la procedura guidata iniziale, che riepilogherà l'elenco delle azioni che verranno eseguite all'interno della procedura guidata. Fai clic su Avanti per procedere:
Nella finestra successiva, ti verrà chiesto di selezionare quale istanza di SQL Server fungerà da distributore. Offre la possibilità di selezionare l'istanza di SQL Server corrente come distributore e creare il database del sistema di distribuzione su tale istanza o specificare un'altra istanza di SQL Server da utilizzare come distributore. In questo scenario, utilizzeremo l'istanza SQL1 corrente come distributore. Seleziona l'opzione che soddisfa il tuo piano di progettazione, quindi fai clic su Avanti per continuare:
Poiché il servizio SQL Server Agent svolge un ruolo fondamentale nel processo di replica di SQL Server, in cui verrà creato un processo di SQL Server Agent per ogni agente di replica, si consiglia di modificare la modalità di avvio se il servizio SQL Server Agent da Manuale (per impostazione predefinita ) per essere Automatico. In modo che venga eseguito automaticamente al riavvio di SQL Server, senza correre il rischio di dimenticarsi di avviarlo manualmente. Questa procedura guidata offre la possibilità di modificare automaticamente la modalità di avvio del servizio SQL Server Agent, tenendo conto del fatto che l'account del servizio SQL Server dispone dei privilegi di amministratore su quel server per eseguire tale azione. Nel nostro caso, eseguiremo la modifica manualmente. Fai clic su Avanti per procedere:
Successivamente, la procedura guidata ti chiederà di specificare la cartella in cui verrà creato lo snapshot di sincronizzazione iniziale. Specifica una cartella nell'unità disco con spazio sufficiente, quindi fai clic su Avanti per continuare:
Nella finestra successiva, ti verrà chiesto di specificare il nome del database di distribuzione e la posizione in cui archiviare i dati e i file di registro per quel database. Specifica il nome e la posizione personalizzati o mantieni le impostazioni predefinite, quindi fai clic su Avanti per procedere:
Successivamente, è necessario selezionare l'elenco delle istanze di SQL Server che fungeranno da editori e archiviare i relativi metadati nel database di distribuzione. Se disponi di una topologia predefinita, aggiungi tutti i publisher candidati, quindi fai clic su Avanti per continuare:
Nella finestra successiva, scegli le azioni che verranno eseguite da quella procedura guidata, se configurare direttamente la distribuzione, generare un file di script per i passaggi di configurazione menzionati o entrambi. Nel nostro scenario, configureremo direttamente la distribuzione. Fai clic su Avanti per procedere:
Nella finestra Completa la procedura guidata, rivedi tutte le selezioni eseguite in precedenza e assicurati che non debbano essere apportate modifiche a queste selezioni, quindi fai clic su Fine per avviare il processo di configurazione:
Quando il processo di configurazione della distribuzione è stato completato correttamente, la procedura guidata ti avviserà con un segno di spunta verde accanto a ciascuna azione. In caso di problemi, verrà visualizzato un messaggio di errore significativo per risolverlo e ripetere nuovamente la configurazione. Poiché tutte le azioni sono state completate correttamente, Chiudi la procedura guidata di configurazione:
Se espandi il nodo Database di sistema, in Esplora oggetti SSMS, vedrai che viene creato un nuovo database del sistema di distribuzione che verrà utilizzato per archiviare i metadati di replica di SQL Server, come mostrato di seguito:
Configura l'editore
Dopo aver configurato il Distributore, il passaggio successivo è la configurazione del Publisher che funge da origine dati per gli altri siti.
Per configurare il Publisher, connettiti all'istanza di SQL Server che contiene il database da pubblicare, sfoglia il nodo Replica di SQL Server in Esplora oggetti, quindi fai clic con il pulsante destro del mouse sul nodo Pubblicazioni locali e scegli Nuova pubblicazione... opzione, come di seguito:
La prima finestra della procedura guidata Nuova pubblicazione è la pagina iniziale, che mostra l'elenco delle azioni che verranno eseguite in quella procedura guidata. Dopo aver letto come questa procedura guidata ti aiuterà, fai clic su Avanti per continuare:
Nella pagina successiva, ti verrà chiesto di selezionare il database che verrà pubblicato per gli Abbonati, che è il database AdventureWorks2017 nella nostra demo qui. Fai clic su Avanti per procedere:
Successivamente, ti verrà chiesto di selezionare il tipo di pubblicazione che riesci a utilizzare. Abbiamo discusso in precedenza in questo articolo l'elenco dei tipi di replica di SQL Server forniti in SQL Server. In questa demo utilizzeremo la Pubblicazione transazionale genere. Fai clic su Avanti per continuare:
Nella pagina Articoli è possibile selezionare l'elenco di oggetti database che si prevede di replicare agli abbonati. Hai la possibilità di scegliere tutti gli oggetti disponibili in ogni tipo o espandere il tipo di oggetto e selezionare l'elenco di oggetti da replicare. In questa demo, replicheremo tutte le tabelle del database agli abbonati. Dopo aver esaminato la selezione dell'oggetto, fai clic su Avanti per procedere:
SQL Server consente inoltre di aggiungere filtri per gli oggetti di database selezionati e di replicare solo i dati che soddisfano i criteri dei filtri aggiunti. Se intendi replicare l'intera riga della tabella, salta questa pagina facendo clic su Avanti pulsante:
Nella pagina Snapshot Agent, specificare se si prevede di creare immediatamente lo snapshot di sincronizzazione iniziale, pianificarne l'esecuzione in un secondo momento o eseguirlo manualmente una volta completata la configurazione della replica. In questa demo creerò uno snapshot dopo aver completato la configurazione della replica di SQL Server. Fai clic su Avanti per continuare:
Successivamente, ti verrà chiesto di configurare l'account che verrà utilizzato per eseguire l'agente snapshot e gli agenti di lettura log. Questo utente deve disporre almeno dell'autorizzazione db_owner sul database dell'editore, del distributore e dell'abbonato, oltre alle autorizzazioni di lettura e scrittura sulla cartella snapshot. È inoltre possibile utilizzare l'account del servizio SQL Agent per eseguire questi agenti di replica di SQL Server, operazione non consigliata dal punto di vista della sicurezza. Fornisci l'account autorizzato e fai clic su Avanti per continuare:
Nella pagina Azioni della procedura guidata, selezionare le azioni che verranno eseguite dopo aver completato questa procedura guidata, che include la creazione della pubblicazione e la generazione di un file di script per creare la pubblicazione in un secondo momento o utilizzare questo script come modello per altri server. In questa demo, sceglieremo di Creare la pubblicazione , quindi fai clic su Avanti per procedere:
L'ultima pagina è la procedura guidata Completa, in cui è necessario fornire il nome della pubblicazione e rivedere le scelte effettuate all'interno di questa procedura guidata, quindi fare clic su Fine per procedere con la creazione della pubblicazione:
Una volta completata la procedura guidata di creazione della pubblicazione, mostrerà il risultato del processo di creazione della pubblicazione e se il processo è stato completato correttamente con controlli verdi o non è riuscito in un passaggio specifico con un messaggio di errore significativo. In questa demo, la pubblicazione viene creata correttamente senza problemi, come mostrato di seguito:
Per verificare se la pubblicazione è stata creata correttamente, espandere il nodo Pubblicazioni locali nel nodo Replica SQL Server di Esplora oggetti SSMS e controllare la pubblicazione appena creata. Puoi anche rivedere e modificare le impostazioni della pubblicazione dalla pagina delle proprietà della pubblicazione. La pubblicazione sarà come:
Configura l'abbonato
Per ora, abbiamo configurato correttamente l'editore e il distributore, è il momento di configurare l'abbonato, che funge da destinazione dati e riceve i dati dall'abbonato.
Per configurare il Sottoscrittore, dalla stessa istanza di Publisher, espandere il nodo Replica di SQL Server in Esplora oggetti SSMS, fare clic con il pulsante destro del mouse sul nodo Sottoscrizioni locali e selezionare Nuove sottoscrizioni … opzione, come mostrato di seguito:
La prima finestra visualizzata nella procedura guidata Nuovo abbonamento è la pagina iniziale, che mostra come questa procedura guidata ti aiuterà nella configurazione dell'abbonato. Fai clic su Avanti per procedere:
Il primo passaggio nella configurazione dell'abbonato è selezionare l'editore per il quale verrà creato l'abbonato e il database di pubblicazione che fungerà da origine dati per tale abbonato. Seleziona il database delle pubblicazioni dai database elencati, quindi fai clic su Avanti per continuare:
Successivamente, ti verrà chiesto di specificare se eseguire tutti gli agenti sul lato Distributore e inviare le modifiche al Sottoscrittore, fornendo un'amministrazione centralizzata per il processo di sincronizzazione della replica o eseguire ciascun agente presso il proprio Sottoscrittore che estrarrà le modifiche dal Publisher , riducendo il sovraccarico di elaborazione sul lato Distributore e consentendo di amministrare separatamente la sincronizzazione di ciascun abbonato. In questa demo, sceglieremo l'abbonamento push e faremo clic su Avanti per continuare:
Nella finestra successiva, è necessario aggiungere l'istanza di SQL Server dell'abbonato e il database di destinazione della sottoscrizione, con la possibilità di creare quel database se non esiste, come mostrato di seguito:
Nella pagina Protezione agente di distribuzione, specificare l'account con cui verrà eseguito l'agente di distribuzione per eseguire il processo di sincronizzazione e l'account che verrà utilizzato per connettersi alle istanze SQL Server del distributore e del sottoscrittore. Si consiglia di fornire un account di dominio autorizzato che disponga dell'autorizzazione sia per il Distributore che per il Sottoscrittore, con la possibilità di utilizzare l'account del servizio SQL Agent per connettersi al Distributore e al Sottoscrittore, cosa sconsigliata dal punto di vista della sicurezza. Dopo aver fornito l'account di sicurezza autorizzato, fai clic su Avanti per continuare:
Nella pagina successiva della procedura guidata Nuova sottoscrizione, specificare la pianificazione della sincronizzazione per ciascun agente. Mantieni l'impostazione predefinita se desideri che la sincronizzazione venga eseguita continuamente, quindi fai clic su Avanti per continuare:
Successivamente, puoi specificare se inizializzare le Sottoscrizioni con uno snapshot della pubblicazione e quando eseguire il processo di inizializzazione. In questa demo, scegliamo di inizializzare l'Abbonamento alla prima sincronizzazione, come mostrato di seguito:
Nella finestra Azioni della procedura guidata, puoi scegliere quali azioni devono essere eseguite alla fine di questa procedura guidata. Ad esempio, questa procedura guidata offre la possibilità di creare le sottoscrizioni configurate e generare un file di script per creare le sottoscrizioni in un secondo momento o in un'altra istanza di SQL Server, come segue:
Successivamente, la procedura guidata ti fornirà un riepilogo di tutte le configurazioni che hai selezionato in quella procedura guidata per verificarlo prima di avviare la configurazione dell'abbonamento. Se tutte le selezioni sono corrette, fai clic su Fine per avviare il processo di configurazione:
Se l'operazione di creazione dell'abbonamento è stata completata correttamente, la procedura guidata ci avviserà con un segno di spunta verde per ogni azione completata o ci fornirà un messaggio di errore significativo in caso di errore, come mostrato di seguito:
Per verificare che l'Abbonamento sia stato creato correttamente, nel nodo Replica di SSMS Object Explorer, espandi la Pubblicazione precedentemente creata e vedrai tutti gli Abbonamenti collegati a quel Publisher e riceverai i dati da esso, come mostrato di seguito:
Crea istantanea di sincronizzazione iniziale
Se non hai scelto di creare uno snapshot di sincronizzazione iniziale durante la creazione del Publisher, puoi comunque creare lo snapshot dopo aver configurato i componenti di replica.
Per creare uno snapshot di sincronizzazione iniziale, fai clic con il pulsante destro del mouse sulla pubblicazione creata e scegli Visualizza stato dell'agente snapshot opzione. Dalla finestra aperta, fare clic sul pulsante Start per eseguire l'agente snapshot e creare lo snapshot di sincronizzazione iniziale. Puoi anche monitorare l'avanzamento del processo di creazione dell'istantanea fino a quando l'istantanea di tutti gli articoli non viene creata correttamente, come di seguito:
Monitoraggio della sincronizzazione
Una volta creato lo snapshot degli articoli replicati, il processo di sincronizzazione con l'Abbonato verrà avviato automaticamente, scrivendo tutti gli articoli da quell'istantanea all'Abbonato. Per monitorare il processo di sincronizzazione, fare clic con il pulsante destro del mouse sull'abbonamento in Replica di SQL Server nodo di SSMS Object Explorer e scegli Visualizza stato sincronizzazione opzione, dove ti mostrerà il numero di transazioni e comandi eseguiti sull'Abbonato, come mostrato di seguito:
Inoltre, è possibile monitorare lo stato di tutti gli agenti di replica e il numero di comandi in sospeso sul lato Distributore e non applicati sul lato Abbonato, facendo clic con il pulsante destro del mouse sul nome della pubblicazione e scegliendo la finestra Launch Replication Monitor, come mostrato di seguito:
Per verificare che il sito di replica funzioni correttamente, aggiungiamo un nuovo record a uno degli articoli replicati, tabella "Dipendente", lato editore, che non è disponibile lato abbonato, quindi vedrai dal monitor replica finestra in cui un nuovo record viene consegnato dall'editore al distributore, quindi all'abbonato. Dopodiché vedrai che il nuovo record è disponibile nella tabella Impiegato sul lato Abbonato, come mostrato chiaramente di seguito:
Con passaggi semplici e chiari, abbiamo creato un sito di replica transazionale completo, sincronizzato e funzionante. Nel prossimo articolo vedremo come risolvere un sito di replica di SQL Server esistente. Resta sintonizzato.