Esercitazione: Configurare la replica tra due server sempre connessi (replica transazionale)Tutorial: Configure replication between two fully connected servers (transactional)

QUESTO ARGOMENTO SI APPLICA A: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

La replica transazionale è una buona soluzione al problema legato al trasferimento dei dati tra server con connessione continua.Transactional replication is a good solution to the problem of moving data between continuously connected servers. Con la procedura guidata di replica è possibile eseguire in modo semplificato i passaggi necessari per configurare e amministrare una topologia di replica.By using the Replication Wizard, you can easily configure and administer a replication topology.

Questa esercitazione illustra come configurare una topologia di replica transazionale per server con connessione continua.This tutorial shows you how to configure a transactional replication topology for continuously connected servers. Per altre informazioni sul funzionamento della replica transazionale, vedere la panoramica della replica transazionale.For more information about how transactional replication works, see the overview of transactional replication.

Lezioni dell'esercitazioneWhat you will learn

Questa esercitazione insegna come pubblicare dati da un database all'altro tramite la replica transazionale.This tutorial teaches you to publish data from one database to another by using transactional replication.

In questa esercitazione verranno illustrate le procedure per:In this tutorial, you will learn how to:

  • Creare un server di pubblicazione tramite la replica transazionale.Create a publisher via transactional replication.
  • Creare un sottoscrittore per il server di pubblicazione transazionale.Create a subscriber for the transactional publisher.
  • Convalidare la sottoscrizione e misurare la latenza.Validate the subscription and measure latency.

PrerequisitesPrerequisites

Questa esercitazione è destinata agli utenti che hanno familiarità con le operazioni di base relative ai database ma con un'esperienza limitata delle operazioni di replica.This tutorial is for users who are familiar with basic database operations, but who have limited experience with replication. Prima di iniziare questa esercitazione, è necessario completare Esercitazione: Preparare SQL Server per la replica.Before you start this tutorial, you must complete Tutorial: Prepare SQL Server for replication.

Per completare questa esercitazione, sono necessari SQL Server, SQL Server Management Studio (SSMS) e un database AdventureWorks:To complete this tutorial, you need SQL Server, SQL Server Management Studio (SSMS), and an AdventureWorks database:

  • Nel server di pubblicazione (origine) installare:At the publisher server (source), install:

    • Una qualsiasi edizione di SQL ServerSQL Server, ad eccezione di SQL Server Express e di SQL Server Compact.Any edition of SQL ServerSQL Server, except SQL Server Express or SQL Server Compact. Questa edizioni non possono fungere da server di pubblicazione per la replica.These editions cannot be replication publishers.
    • Database di esempio AdventureWorks2012AdventureWorks2012 .The AdventureWorks2012AdventureWorks2012 sample database. Per una maggiore sicurezza, i database di esempio non vengono installati per impostazione predefinita.To enhance security, the sample databases are not installed by default.
  • Nel server sottoscrittore (destinazione) installare qualsiasi edizione di SQL ServerSQL Server, ad eccezione di SQL Server CompactSQL Server Compact.At the subscriber server (destination), install any edition of SQL ServerSQL Server, except SQL Server CompactSQL Server Compact. SQL Server CompactSQL Server Compact non può essere un sottoscrittore nella replica transazionale. cannot be a subscriber in transactional replication.

  • Installare SQL Server Management Studio.Install SQL Server Management Studio.

  • Installare SQL Server 2017 Developer Edition.Install SQL Server 2017 Developer edition.
  • Scaricare il database di esempio AdventureWorks.Download the AdventureWorks sample database. Per istruzioni sul ripristino di un database in SSMS, vedere Ripristino di un database.For instructions on restoring a database in SSMS, see Restoring a database.

Nota

  • La replica non è supportata nelle istanze di SQL Server con versioni la cui distanza sia maggiore di 2.Replication is not supported on SQL Server instances that are more than two versions apart. Per altre informazioni, vedere Supported SQL Server Versions in Replication Topology (Versioni di SQL Server supportate nella topologia di replica).For more information, see Supported SQL Server Versions in Replication Topology.
  • In SQL Server Management StudioSQL Server Management Studio è necessario connettersi al server di pubblicazione e al sottoscrittore usando un account di accesso che sia membro del ruolo predefinito del server sysadmin.In SQL Server Management StudioSQL Server Management Studio, you must connect to the publisher and subscriber by using a login that is a member of the sysadmin fixed server role. Per altre informazioni su questo ruolo, vedere Ruoli a livello di server.For more information on this role, see Server-level roles.

Tempo stimato per il completamento dell'esercitazione: 60 minutiEstimated time to complete this tutorial: 60 minutes

Configurare il server di pubblicazione per la replica transazionaleConfigure the publisher for transactional replication

In questa sezione viene creata una pubblicazione transazionale usando SQL Server Management StudioSQL Server Management Studio per pubblicare un subset filtrato della tabella Product nel database di esempio AdventureWorks2012AdventureWorks2012.In this section, you create a transactional publication by using SQL Server Management StudioSQL Server Management Studio to publish a filtered subset of the Product table in the AdventureWorks2012AdventureWorks2012 sample database. Viene anche aggiunto l'account di accesso di SQL Server usato dall'agente di distribuzione all'elenco di accesso alla pubblicazione.You also add the SQL Server login used by the Distribution Agent to the publication access list (PAL).

Creare una pubblicazione e definire articoliCreate a publication and define articles

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studio e quindi espandere il nodo server.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Fare clic con il pulsante destro del mouse su SQL Server Agent e selezionare Avvia.Right-click SQL Server Agent and select Start. SQL Server Agent deve essere in esecuzione prima della creazione della pubblicazione.The SQL Server Agent should be running before you create the publication. Se con questa operazione l'agente non si avvia, è necessario avviarlo manualmente da Gestione configurazione SQL Server.If this step does not start your agent, you'll need to do so manually from SQL Server Configuration Manager.

  3. Espandere la cartella Replica, fare clic con il pulsante destro del mouse sulla cartella Pubblicazioni locali e selezionare Nuova Pubblicazione.Expand the Replication folder, right-click the Local Publications folder, and select New Publication. Questa operazione avvia la Creazione guidata nuova pubblicazione:This step starts the New Publication Wizard:

    Selezioni per l'avvio della Creazione guidata nuova pubblicazione

  4. Nella pagina Database di pubblicazione selezionare AdventureWorks2012AdventureWorks2012 e quindi Avanti.On the Publication Database page, select AdventureWorks2012AdventureWorks2012, and then select Next.

  5. Nella pagina Tipo di pubblicazione selezionare Pubblicazione transazionale e quindi Avanti:On the Publication Type page, select Transactional publication, and then select Next:

    Pagina "Tipo di pubblicazione" con il tipo di pubblicazione selezionato

  6. Nella pagina Articoli espandere il nodo Tabelle e selezionare la casella di controllo Product.On the Articles page, expand the Tables node and select the Product check box. Espandere quindi Product e deselezionare le caselle di controllo accanto a ListPrice e a StandardCost.Then expand Product and clear the check boxes next to ListPrice and StandardCost. Fare clic su Avanti.Select Next.

    Pagina "Articoli" con gli articoli selezionati per la pubblicazione

  7. Nella pagina Filtro righe tabella selezionare Aggiungi.On the Filter Table Rows page, select Add.

  8. Nella finestra di dialogo Aggiungi filtro selezionare la colonna SafetyStockLevel.In the Add Filter dialog box, select the SafetyStockLevel column. Selezionare la freccia a destra per aggiungere la colonna alla clausola WHERE in Istruzione per il filtro nella query di filtro.Select the right arrow to add the column to the filter statement WHERE clause of the filter query. Digitare quindi manualmente il modificatore della clausola WHERE come segue:Then manually type in the WHERE clause modifier as follows:

    WHERE [SafetyStockLevel] < 500  
    

    Pagina "Filtro righe tabella" e finestra di dialogo "Aggiungi filtro"

  9. Selezionare OKe quindi selezionare Avanti.Select OK, and then select Next.

  10. Selezionare la casella di controllo Crea uno snapshot immediatamente e mantieni lo snapshot disponibile per l'inizializzazione delle sottoscrizioni e selezionare Avanti:Select the Create a snapshot immediately and keep the snapshot available to initialize subscriptions check box, and select Next:

    Pagina "Agente di snapshot" con la casella di controllo selezionata

  11. Nella pagina Sicurezza agente deselezionare la casella di controllo Usa le impostazioni di sicurezza dell'agente snapshot.On the Agent Security page, clear the Use the security settings from the Snapshot Agent check box.

    Selezionare Impostazioni di sicurezza per l'agente snapshot.Select Security Settings for the Snapshot Agent. Immettere <Nome_server_pubblicazione>\repl_snapshot nella casella Account processo, specificare la password per l'account e quindi selezionare OK.Enter <Publisher_Machine_Name>\repl_snapshot in the Process account box, supply the password for this account, and then select OK.

    Pagina "Sicurezza agente" e finestra di dialogo "Sicurezza agente snapshot"

  12. Ripetere il passaggio precedente per impostare <Nome_server_pubblicazione>\repl_logreader come account di processo per l'agente di lettura logRepeat the previous step to set <Publisher_Machine_Name>\repl_logreader as the process account for the Log Reader Agent. e quindi selezionare OK.Then select OK.

    Finestra di dialogo "Sicurezza agente di lettura log" e pagina "Sicurezza agente"

  13. Nella pagina Completamento procedura guidata digitare AdvWorksProductTrans nella casella Nome pubblicazione e selezionare Fine:On the Complete the Wizard page, type AdvWorksProductTrans in the Publication name box, and select Finish:

    Pagina "Completamento procedura guidata" con il nome della pubblicazione

  14. Dopo la creazione della pubblicazione, selezionare Chiudi per completare la procedura guidata.After the publication is created, select Close to complete the wizard.

Se quando si tenta di creare la pubblicazione SQL Server Agent non è in esecuzione, può essere visualizzato l'errore riportato di seguito,You might encounter the following error if your SQL Server Agent is not running when you try to create the publication. che indica che la pubblicazione è stata creata ma non è stato possibile avviare l'agente di snapshot.This error indicates that your publication was created successfully but your Snapshot Agent was unable to start. In questo caso, è necessario avviare SQL Server Agent e quindi avviare manualmente l'agente di snapshot.If this happens, you'll need to start the SQL Server Agent, and then manually start the Snapshot Agent. Le istruzioni sono descritte nella prossima sezione.The next section gives instructions.

Avviso del mancato avvio dell'agente di snapshot

Visualizzare lo stato della generazione dello snapshotView the status of snapshot generation

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studio, espandere il nodo del server e quindi la cartella Replica.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio, expand the server node, and then expand the Replication folder.

  2. Nella cartella Pubblicazioni locali fare clic con il pulsante destro del mouse su AdvWorksProductTrans e quindi selezionare Visualizza stato agente snapshot:In the Local Publications folder, right-click AdvWorksProductTrans, and then select View Snapshot Agent Status:
    Comandi del menu di scelta rapida per la visualizzazione dello stato dell'agente di snapshotCommand on the shortcut menu for viewing the Snapshot Agent status

  3. Verrà visualizzato lo stato corrente del processo dell'agente di snapshot per la pubblicazione.The current status of the Snapshot Agent job for the publication appears. Verificare che il processo snapshot abbia avuto esito positivo prima di passare alla sezione successiva.Verify that the snapshot job has succeeded before you continue to the next section.

Se al momento della creazione della pubblicazione SQL Server Agent non era in esecuzione, l'agente di snapshot risulta mai eseguito in Visualizza stato agente snapshot per la pubblicazione.If your SQL Server Agent was not running when you created the publication, you'll see that the Snapshot Agent was never run when you check the Snapshot Agent status for your publication. In questo caso, selezionare Avvia per avviare l'agente di snapshot:If that's the case, select Start to start your Snapshot Agent:

Pulsante "Avvia" e modifica nel messaggio di stato che indica che l'agente di snapshot è stato eseguito

Se a questo punto viene visualizzato un errore, vedere Troubleshooting Snapshot Agent error (Risoluzione dei problemi dell'agente di snapshot).If you see an error here, see Troubleshooting Snapshot Agent error.

Aggiungere l'account di accesso dell'agente di distribuzione all'elenco di accesso alla pubblicazioneAdd the Distribution Agent login to the PAL

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studio, espandere il nodo del server e quindi la cartella Replica.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio, expand the server node, and then expand the Replication folder.

  2. Nella cartella Pubblicazioni locali fare clic con il pulsante destro del mouse su AdvWorksProductTrans e quindi selezionare Proprietà.In the Local Publications folder, right-click AdvWorksProductTrans, and then select Properties. Verrà visualizzata la finestra di dialogo Proprietà pubblicazione.The Publication Properties dialog box appears.

    A.a. Selezionare la pagina Elenco di accesso alla pubblicazione e selezionare Aggiungi.Select the Publication Access List page, and select Add.
    B.b. Nella finestra di dialogo Aggiungi accesso alla pubblicazione selezionare <Nome_server_pubblicazione>\repl_distribution e selezionare OK.In the Add Publication Access dialog box, select <Publisher_Machine_Name>\repl_distribution, and select OK.

    Selezioni per l'aggiunta di un account di accesso all'elenco di accesso alla pubblicazione

Per altre informazioni, vedere Concetti di base relativi alla programmazione della replica.For more information, see Replication programming concepts.

Creare una sottoscrizione per la pubblicazione transazionaleCreate a subscription to the transactional publication

In questa sezione si aggiunge un sottoscrittore alla pubblicazione creata in precedenza.In this section, you add a subscriber to the publication that you previously created. Questa esercitazione usa un sottoscrittore remoto (NODE2\SQL2016), ma è anche possibile aggiungere localmente una sottoscrizione al server di pubblicazione.This tutorial uses a remote subscriber (NODE2\SQL2016), but you can also add a subscription locally to the publisher.

Creare la sottoscrizioneCreate the subscription

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studio, espandere il nodo del server e quindi la cartella Replica.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio, expand the server node, and then expand the Replication folder.

  2. Nella cartella Pubblicazioni locali fare clic con il pulsante destro del mouse sulla pubblicazione AdvWorksProductTrans e quindi selezionare Nuove sottoscrizioni.In the Local Publications folder, right-click the AdvWorksProductTrans publication, and then select New Subscriptions. Verrà avviata la Creazione guidata nuova sottoscrizione:The New Subscription Wizard starts:

    Selezioni per avviare la Creazione guidata nuova sottoscrizione

  3. Nella pagina Pubblicazione selezionare AdvWorksProductTrans e quindi selezionare Avanti:On the Publication page, select AdvWorksProductTrans, and then select Next:

    Pagina "Pubblicazione" con la pubblicazione selezionata

  4. Nella pagina Posizione in cui eseguire l'agente di distribuzione selezionare Esegui tutti gli agenti nel database di distribuzione e quindi selezionare Avanti.On the Distribution Agent Location page, select Run all agents at the Distributor, and then select Next. Per altre informazioni sulle sottoscrizioni pull e push, vedere Sottoscrivere le pubblicazioni.For more information on pull and push subscriptions, see Subscribe to publications.

    Pagina "Posizione in cui eseguire l'agente di distribuzione" con l'opzione "Esegui tutti gli agenti nel database di distribuzione" selezionata

  5. Nella pagina Sottoscrittori, se il nome dell'istanza del sottoscrittore non è visualizzato, selezionare Aggiungi sottoscrittore e quindi selezionare Aggiungi Sottoscrittore SQL Server dall'elenco a discesa.On the Subscribers page, if the name of the subscriber instance is not displayed, select Add Subscriber, and then select Add SQL Server Subscriber from the drop-down list. Questa operazione consente di aprire la finestra di dialogo Connetti al server.This step opens the Connect to Server dialog box. Immettere il nome dell'istanza del sottoscrittore e quindi selezionare Connetti.Enter the subscriber instance name and then select Connect.

    Dopo l'aggiunta del sottoscrittore, selezionare la casella accanto al nome dell'istanza di questoAfter the subscriber has been added, select the check box next to the instance name of your subscriber. e quindi selezionare Nuovo database in Database di sottoscrizione.Then select New Database under Subscription Database.

    Pagina "Sottoscrittori" con le selezioni per l'aggiunta di un server di sottoscrizione

  6. Verrà visualizzata la finestra di dialogo Nuovo database.The New Database dialog box appears. Nella casella Nome database immettere ProductReplica, selezionare OK e quindi selezionare Avanti:Enter ProductReplica in the Database name box, select OK, and then select Next:

    Immissione di un nome per il database di sottoscrizione

  7. Nella pagina Sicurezza agente di distribuzione selezionare il pulsante con i tre puntini ().On the Distribution Agent Security page, select the ellipsis () button. Immettere <Nome_server_pubblicazione>\repl_distribution nella casella Account processo, immettere la password per l'account, selezionare OK, e quindi selezionare Avanti.Enter <Publisher_Machine_Name>\repl_distribution in the Process account box, enter the password for this account, select OK, and then select Next.

    Informazioni dell'account di distribuzione nella finestra di dialogo "Sicurezza agente di distribuzione"

  8. Selezionare Fine per accettare i valori predefiniti nelle pagine rimanenti e completare la procedura guidata.Select Finish to accept the default values on the remaining pages and complete the wizard.

Impostare le autorizzazioni per il database nel sottoscrittoreSet database permissions at the subscriber

  1. Connettersi al sottoscrittore in SQL Server Management StudioSQL Server Management Studio.Connect to the subscriber in SQL Server Management StudioSQL Server Management Studio. Espandere la cartella Sicurezza, fare clic con il pulsante destro del mouse su Account di accesso e quindi scegliere Nuovo account accesso.Expand Security, right-click Logins, and then select New Login.

    A.a. Nella pagina Generale, in Nome account di accesso, selezionare Cerca e aggiungere l'account di accesso per <Nome_computer_sottoscrittore>\repl_distribution.On the General page, under Login Name, select Search and add the login for <Subscriber_Machine_Name>\repl_distribution.

    B.b. Nella pagina Mapping utenti concedere all'account di accesso db_owner l'appartenenza per il database ProductReplica.On the User Mappings page, grant the login db_owner membership for the ProductReplica database.

    Selezioni per la configurazione dell'accesso nel sottoscrittore

  2. Selezionare OK per chiudere la finestra di dialogo Nuovo account accesso.Select OK to close the New Login dialog box.

Visualizzare lo stato di sincronizzazione della sottoscrizioneView the synchronization status of the subscription

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studio.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio. Espandere il nodo server e la cartella Replica.Expand the server node, and then expand the Replication folder.

  2. Nella cartella Pubblicazioni locali espandere la pubblicazione AdvWorksProductTrans, fare clic con il pulsante destro del mouse sulla sottoscrizione nel database ProductReplica e quindi selezionare Visualizza stato sincronizzazione.In the Local Publications folder, expand the AdvWorksProductTrans publication, right-click the subscription in the ProductReplica database, and then select View Synchronization Status. Verrà visualizzato lo stato corrente della sincronizzazione della sottoscrizione:The current synchronization status of the subscription appears:

    Selezioni per l'apertura della finestra di dialogo "Visualizza stato sincronizzazione"

  3. Se la sottoscrizione non è visualizzata in AdvWorksProductTrans, premere F5 per aggiornare l'elenco.If the subscription is not visible under AdvWorksProductTrans, select the F5 key to refresh the list.

Per altre informazioni, vedere:For more information, see:

Misurare la latenza di replicaMeasure replication latency

In questa sezione vengono usati token di traccia per verificare che le modifiche vengano replicate nel sottoscrittore e per determinare la latenza.In this section, you use tracer tokens to verify that changes are being replicated to the subscriber and to determine latency. La latenza è il tempo necessario perché una modifica effettuata nel server di pubblicazione sia visibile nel sottoscrittore.Latency is the time it takes for a change made at the publisher to appear to the subscriber.

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studio.Connect to the publisher in SQL Server Management StudioSQL Server Management Studio. Espandere il nodo server, fare clic con il pulsante destro del mouse sulla cartella Replica e quindi selezionare Avvia Monitoraggio replica:Expand the server node, right-click the Replication folder, and then select Launch Replication Monitor:

    Comando "Avvia Monitoraggio replica" nel menu di scelta rapida

  2. Espandere un gruppo di server di pubblicazione nel riquadro sinistro, espandere l'istanza del server di pubblicazione e quindi selezionare la pubblicazione AdvWorksProductTrans.Expand a publisher group in the left pane, expand the publisher instance, and then select the AdvWorksProductTrans publication.

    A.a. Selezionare la scheda Token di traccia.Select the Tracer Tokens tab.
    B.b. Selezionare Inserisci utilità di traccia.Select Insert Tracer.
    c.c. Visualizzare il tempo trascorso per il token di traccia nelle colonne Dal server di pubblicazione al server di distribuzione, Dal server di distribuzione al Sottoscrittoree Latenza totale.View elapsed time for the tracer token in the following columns: Publisher to Distributor, Distributor to Subscriber, Total Latency. Il valore In sospeso indica che il token non ha raggiunto il punto specificato.A value of Pending indicates that the token has not reached a specified point.

    Informazioni per il token di traccia

Per altre informazioni, vedere:For more information, see:

Passaggi successiviNext steps

È stata eseguita la configurazione sia del server di pubblicazione che del sottoscrittore per la replica transazionale.You have successfully configured both your publisher and your subscriber for transactional replication. È ora possibile inserire, aggiornare ed eliminare dati nella tabella Product nel server di pubblicazione.You can now insert, update, or delete data in the Product table at the publisher. È anche possibile eseguire una query nella tabella Product dal sottoscrittore per visualizzare le modifiche replicate.Then you can query the Product table at the subscriber to view the replicated changes.

Il prossimo articolo illustrerà come configurare la replica di tipo merge:The next article will teach you how to configure merge replication: