Esercitazione: Configurare la replica tra un server e più client per dispositivi mobili (replica di tipo merge)

Si applica a: SQL Server

La replica di tipo merge è una buona soluzione al problema legato al trasferimento dei dati tra un server centrale e client per dispositivi mobili connessi solo occasionalmente. Le procedure guidate relative alla replica consentono di eseguire in modo semplificato i passaggi necessari per configurare e amministrare una topologia di replica di tipo merge.

In questa esercitazione viene illustrato come configurare una topologia di replica per client mobili. Per altre informazioni sulla replica di tipo merge, vedere Panoramica della replica di tipo merge.

Contenuto dell'esercitazione

Questa esercitazione illustra come usare la replica di tipo merge per pubblicare dati da un database centrale per uno o più utenti di dispositivi mobili in modo che ogni utente riceva un subset dei dati filtrato in modo univoco.

La presente esercitazione include informazioni su come:

  • Configurare un server di pubblicazione per la replica di tipo merge.
  • Aggiungere un sottoscrittore per dispositivi mobili per la pubblicazione di tipo merge.
  • Sincronizzare la sottoscrizione con la pubblicazione di tipo merge.

Prerequisiti

Questa esercitazione è destinata agli utenti che hanno familiarità con le operazioni fondamentali relative ai database ma con un'esperienza limitata delle operazioni di replica. Prima di iniziare questa esercitazione, è necessario completare Esercitazione: Preparare SQL Server per la replica.

Per completare questa esercitazione, sono necessari SQL Server, SQL Server Management Studio (SSMS) e un database AdventureWorks:

  • Nel server di pubblicazione (origine) installare:

    • Una qualsiasi edizione di SQL Server, ad eccezione di SQL Server Express e SQL Server Compact. Queste edizioni non possono fungere da server di pubblicazione per la replica.
    • Database di esempio AdventureWorks2022 . Per una maggiore sicurezza, i database di esempio non vengono installati per impostazione predefinita.
  • Nel server sottoscrittore (destinazione) installare qualsiasi edizione di SQL Server, ad eccezione di SQL Server Express o SQL Server Compact. La pubblicazione creata in questa esercitazione non supporta SQL Server Express o SQL Server Compact.

  • Installare SQL Server Management Studio.

  • Installare SQL Server 2017 Developer Edition.

  • Scaricare il database di esempio AdventureWorks. Per istruzioni sul ripristino di un database in SSMS, vedere Ripristino di un database.

Nota

La replica non è supportata nelle istanze di SQL Server con versioni la cui distanza sia maggiore di 2.

In SQL Server Management Studio, devi connetterti al server di pubblicazione e al Sottoscrittore usando un account di accesso che sia membro del ruolo predefinito del server sysadmin. Per altre informazioni su questo ruolo, vedere Ruoli a livello di server.

Tempo stimato per il completamento dell'esercitazione: 60 minuti

Configurare un server di pubblicazione per la replica di tipo merge

In questa sezione viene creata una pubblicazione di tipo merge usando SQL Server Management Studio per pubblicare un sottoinsieme delle tabelle Employee, SalesOrderHeader e SalesOrderDetail nel database di esempio AdventureWorks2022. Queste tabelle vengono filtrate usando filtri di riga con parametri in modo che ogni sottoscrizione contenga una partizione univoca dei dati. Viene inoltre aggiunto l'account di accesso di SQL Server usato dall'agente di merge all'elenco di accesso alla pubblicazione.

Creare una pubblicazione di tipo merge e definire articoli

  1. Connettiti al server di pubblicazione in SQL Server Management Studio e poi espandi il nodo server.

  2. Avviare SQL Server Agent facendo clic con il pulsante destro del mouse su di esso in Esplora oggetti e selezionando Avvia. Se con questa operazione l'agente non si avvia, è necessario avviarlo manualmente da Gestione configurazione SQL Server.

  3. Espandere la cartella Replica, fare clic con il pulsante destro del mouse su Pubblicazioni locali e quindi scegliere Nuova Pubblicazione. Verrà avviata la Creazione guidata nuova pubblicazione:

    Selezioni per avviare la Creazione guidata nuova pubblicazione

  4. Nella pagina Database di pubblicazione selezionare AdventureWorks2022 e quindi Avanti.

  5. Nella pagina Tipo di pubblicazione selezionare Pubblicazione di tipo merge e quindi Avanti.

  6. Nella pagina Tipi di Sottoscrittore, verifica che sia selezionato solo SQL Server 2008 (10.0.x) o versione successiva, e quindi seleziona Avanti:

    Pagine

  7. Nella pagina Articoli espandere il nodo Tabelle. Selezionare le tre tabelle seguenti: Employee, SalesOrderHeader e SalesOrderDetail. Selezionare Avanti.

    Selezioni delle tabelle nella pagina

    Nota

    La tabella Employee contiene una colonna (OrganizationNode) con tipo di dati hierarchyid. Questo tipo di dati è supportato per la replica solo in SQL Server 2017.

    Se si usa una build precedente a SQL Server 2017, nella parte inferiore della schermata viene visualizzato un messaggio che informa della possibilità di perdere dati se si usa questa colonna nella replica bidirezionale. Ai fini di questa esercitazione, è possibile ignorare questo messaggio. Questo tipo di dati, tuttavia, deve essere replicato in un ambiente di produzione solo se si usa la build supportata.

    Per altre informazioni sulla replica del tipo di dati hierarchyid, vedere Uso di colonne hierarchyid nella replica.

  8. Nella pagina Filtro righe tabella selezionare Aggiungi e quindi Aggiungi filtro.

  9. Nella finestra di dialogo Aggiungi filtro selezionare Employee (HumanResources) in Selezionare la tabella da filtrare. Selezionare la colonna LoginID, selezionare la freccia a destra per aggiungere la colonna alla clausola WHERE della query di filtro e modificare la clausola WHERE come segue:

     WHERE [LoginID] = HOST_NAME()  
    

    Selezionare Una riga di questa tabella verrà inviata a una sola sottoscrizione e quindi OK.

    Selezioni per aggiungere un filtro

  10. Nella pagina Filtro righe tabella selezionare Employee (Human Resources), selezionare Aggiungi e quindi Aggiungi join per estendere il filtro selezionato.

    a. Nella finestra di dialogo Aggiungi join selezionare Sales.SalesOrderHeader in Tabella unita in join. Selezionare L'istruzione per il join verrà scritta manualmente e completare l'istruzione per il join come indicato di seguito:

    ON [Employee].[BusinessEntityID] =  [SalesOrderHeader].[SalesPersonID] 
    

    b. In Specificare le opzioni del joinselezionare Chiave univoca e quindi selezionare OK.

    Selezioni per aggiungere un join al filtro

  11. Nella pagina Filtro righe tabella selezionare SalesOrderHeader, selezionare Aggiungi e quindi Aggiungi join per estendere il filtro selezionato.

    a. Nella finestra di dialogo Aggiungi join selezionare Sales.SalesOrderDetail in Tabella unita in join.
    b. Selezionare Per creare l'istruzione verrà utilizzato il compilatore.
    c. Nella casella Anteprima verificare che l'istruzione join sia come segue:

    ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID] 
    

    d. In Specificare le opzioni del joinselezionare Chiave univoca e quindi selezionare OK. Selezionare Avanti.

    Selezioni per aggiungere un altro join per gli ordini di vendita

  12. Selezionare Crea snapshot immediatamente, deselezionare Usa la pianificazione seguente per l'esecuzione dell'agente snapshote quindi selezionare Avanti:

    Selezione per creare uno snapshot immediatamente

  13. Nella pagina Sicurezza agente selezionare Impostazioni di sicurezza. Immetti <Nome_server_pubblicazione>\repl_snapshot nella casella Account processo, specifica la password per l'account e quindi seleziona OK. Selezionare Avanti.

    Selezioni per impostare la sicurezza dell'agente di snapshot

  14. Nella pagina Completamento procedura guidata immettere AdvWorksSalesOrdersMerge nella casella Nome pubblicazione e selezionare Fine:

    Pagina

  15. Dopo la creazione della pubblicazione, selezionare Chiudi. Nel nodo Replica in Esplora oggetti fare clic con il pulsante destro del mouse su Pubblicazioni locali e selezionare Aggiorna per visualizzare la nuova replica di tipo merge.

Visualizzare lo stato della generazione dello snapshot

  1. Connettiti al server di pubblicazione in SQL Server Management Studio, espandi il nodo server e quindi la cartella Replica.

  2. Nella cartella Pubblicazioni locali fare clic con il pulsante destro del mouse su AdvWorksSalesOrdersMerge e quindi selezionare Visualizza stato agente snapshot:

    Selezioni per visualizzare lo stato dell'agente di snapshot

  3. Verrà visualizzato lo stato corrente del processo dell'agente di snapshot per la pubblicazione. Verificare che il processo snapshot abbia avuto esito positivo prima di passare alla lezione successiva.

Aggiungere l'account di accesso dell'agente di merge all'elenco di accesso alla pubblicazione

  1. Connettiti al server di pubblicazione in SQL Server Management Studio, espandi il nodo server e quindi la cartella Replica.

  2. Nella cartella Pubblicazioni locali fare clic con il pulsante destro del mouse su AdvWorksSalesOrdersMerge e quindi selezionare Proprietà.

    a. Selezionare la pagina Elenco di accesso alla pubblicazione e selezionare Aggiungi.

    b. Nella finestra di dialogo Aggiungi accesso alla pubblicazione seleziona <Nome_server_pubblicazione>\repl_merge e seleziona OK. Selezionare nuovamente OK.

    Selezioni per aggiungere l'account di accesso dell'agente di merge

Per altre informazioni, vedi:

Creare una sottoscrizione alla pubblicazione di tipo merge

In questa sezione si aggiungerà una sottoscrizione alla pubblicazione di tipo merge creata in precedenza. Questa esercitazione usa il sottoscrittore remoto (NODE2\SQL2016). Verranno quindi impostate le autorizzazioni per il database di sottoscrizione e verrà generato manualmente lo snapshot dei dati filtrati per la nuova sottoscrizione.

Aggiungere un sottoscrittore per la pubblicazione di tipo merge

  1. Connettiti al Sottoscrittore in SQL Server Management Studio e poi espandi il nodo server. Espandere la cartella Replica, fare clic con il pulsante destro del mouse sulla cartella Sottoscrizioni locali e quindi selezionare Nuove Sottoscrizioni. Verrà avviata la Creazione guidata nuova sottoscrizione:

    Selezioni per avviare la Creazione guidata nuova sottoscrizione

  2. Nella pagina Pubblicazione selezionare Trova server di pubblicazione SQL Server nell'elenco Server di pubblicazione.

    Nella finestra di dialogo Connetti al server immettere il nome dell'istanza del server di pubblicazione nella casella Nome server e selezionare Connetti.

    Selezioni per aggiungere un server di pubblicazione

  3. Selezionare AdvWorksSalesOrdersMerge e quindi Avanti.

  4. Nella pagina Posizione in cui eseguire l'agente di merge selezionare Esegui ogni agente nel relativo Sottoscrittore e quindi selezionare Avanti:

    Opzione

  5. Nella pagina Sottoscrittori selezionare il nome di istanza del server sottoscrittore. In Database di sottoscrizione selezionare Nuovo database dall'elenco.

    Nella finestra di dialogo Nuovo database immettere SalesOrdersReplica nella casella Nome database. Seleziona OK e quindi Avanti.

    Selezioni per aggiungere un database al sottoscrittore

  6. Nella pagina Sicurezza agente di merge selezionare il pulsante con i tre puntini (). Immetti <Nome_computer_sottoscrittore>\repl_merge nella casella Account processo e specifica la password per questo account. Selezionare OK, Avanti e quindi di nuovo Avanti.

    Selezioni per la sicurezza dell'agente di merge

  7. Nella pagina Pianificazione della sincronizzazione impostare Pianificazione agente su Esecuzione solo su richiesta. Selezionare Avanti.

    Selezione

  8. Nella pagina Inizializzazione sottoscrizioni selezionare Alla prima sincronizzazione nell'elenco Quando. Selezionare Avanti per passare alla pagina Tipo di sottoscrizione e selezionare il tipo di sottoscrizione appropriato. In questa esercitazione viene usato Client. Dopo aver selezionato il tipo di sottoscrizione, selezionare di nuovo Avanti.

    Selezioni per inizializzare le sottoscrizioni alla prima sincronizzazione

  9. Nella pagina Valori HOST_NAME immettere il valore adventure-works\pamela0 nella casella Valore HOST_NAME. Quindi selezionare Fine.

    Pagina

  10. Selezionare di nuovo Fine. Dopo la creazione della sottoscrizione, selezionare Chiudi.

Impostare le autorizzazioni per il server nel sottoscrittore

  1. Connettiti al sottoscrittore in SQL 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.

    Nella pagina Generale, seleziona Cerca e quindi immetti <Nome_ computer_sottoscrittore>\repl_merge nella casella Immettere il nome dell'oggetto. Selezionare Verifica nomi e quindi selezionare OK.

    Selezioni per impostare l'account di accesso

  2. Nella pagina Mapping utenti selezionare il database SalesOrdersReplica e selezionare il ruolo db_owner. Nella pagina Entità a protezione diretta concedere l'autorizzazione Esplicita a Modifica traccia. Seleziona OK.

    Pagine

Creare lo snapshot dei dati filtrati per la sottoscrizione

  1. Connettiti al server di pubblicazione in SQL Server Management Studio, espandi il nodo server e quindi la cartella Replica.

  2. Nella cartella Pubblicazioni locali fare clic con il pulsante destro del mouse sulla pubblicazione AdvWorksSalesOrdersMerge e quindi selezionare Proprietà.

    a. Selezionare la pagina Partizioni dati e selezionare Aggiungi.
    b. Nella finestra di dialogo Aggiungi partizione dati immettere adventure-works\pamela0 nella casella Valore HOST_NAME e quindi selezionare OK.
    c. Selezionare la partizione appena aggiunta, selezionare Genera gli snapshot selezionati adesso e quindi OK.

    Selezioni per aggiungere una partizione

Per altre informazioni, vedi:

Sincronizzare la sottoscrizione con la pubblicazione di tipo merge

In questa sezione verrà inizializzata la sottoscrizione avviando l'agente di merge tramite SQL Server Management Studio. È inoltre necessario eseguire questa procedura per la sincronizzazione con il server di pubblicazione.

Avviare la sincronizzazione e inizializzare la sottoscrizione

  1. Connettiti al sottoscrittore in SQL Server Management Studio.

  2. Verificare che SQL Server Agent sia in esecuzione. In caso negativo, fare clic con il pulsante destro del mouse su SQL Server Agent in Esplora oggetti e selezionare Avvia. Se con questa operazione l'agente non si avvia, è necessario avviarlo manualmente da Gestione configurazione SQL Server.

  3. Espandere il nodo Replica. Nella cartella Sottoscrizioni locali fare clic con il pulsante destro del mouse sulla sottoscrizione nel database SalesOrdersReplica e quindi selezionare Visualizza stato sincronizzazione.

    Selezionare Avvia per inizializzare la sottoscrizione.

    Stato di sincronizzazione con pulsante