Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Cosa imparerai
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.
- Il database di esempio
AdventureWorks2025. 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, è necessario connettersi al server di pubblicazione e al sottoscrittore utilizzando un account 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 AdventureWorks2025. Queste tabelle vengono filtrate usando filtri di riga con parametri in modo che ogni sottoscrizione contenga una partizione univoca dei dati. Si aggiunge inoltre all'elenco di accesso alla pubblicazione (PAL) l'account di accesso a SQL Server usato dal agente di merge.
Creare una pubblicazione di tipo merge e definire articoli
Connettiti al server di pubblicazione in SQL Server Management Studio e poi espandi il nodo server.
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.
Espandere la cartella Replica, fare clic con il pulsante destro del mouse su Pubblicazioni locali e quindi scegliere Nuova Pubblicazione. Si avvia la Creazione guidata Nuova pubblicazione:
Nella pagina Database di pubblicazione selezionare
AdventureWorks2025e quindi Avanti.Nella pagina Tipo di pubblicazione selezionare Pubblicazione di tipo merge e quindi Avanti.
Nella pagina Tipi di Sottoscrittore, verifica che sia selezionato solo SQL Server 2008 (10.0.x) o versione successiva, e quindi seleziona Avanti:
Nella pagina Articoli espandere il nodo Tabelle. Selezionare le tre tabelle seguenti: Employee, SalesOrderHeader e SalesOrderDetail. Selezionare Avanti.
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. Tuttavia, questo tipo di dati non deve essere replicato in un ambiente di produzione, a meno che non si utilizzi la build supportata.
Per altre informazioni sulla replica del tipo di dati hierarchyid, vedere Uso di colonne hierarchyid nella replica.
Nella pagina Filtro righe tabella selezionare Aggiungi e quindi Aggiungi filtro.
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.
Nella pagina Filtro righe tabella, selezionate Employee (Human Resources), selezionate Aggiungi e quindi selezionate Aggiungi un join per estendere il filtro selezionato.
a. Nella finestra di dialogo Aggiungi join, selezionare Sales.SalesOrderHeader in Tabella unita. 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.
Nella pagina Filtro righe tabella selezionare SalesOrderHeader, selezionare Aggiungi e quindi Aggiungi join per estendere il filtro selezionato.
a. Nella finestra di dialogo Aggiungi collegamento, seleziona Sales.SalesOrderDetail in Tabella collegata.
b. Selezionare Per creare l'istruzione verrà utilizzato il compilatore.
c. Nella casella Anteprima, verificare che l'istruzione join sia la seguente:ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID]d. In Specificare le opzioni del joinselezionare Chiave univoca e quindi selezionare OK. Selezionare Avanti.
Selezionare Crea uno snapshot immediatamente, deselezionare Pianifica l'esecuzione dell'agente snapshot negli orari seguenti e quindi selezionare Avanti:
Nella pagina Sicurezza agente selezionare Impostazioni di sicurezza. Immetti <Publisher_Machine_Name>\repl_snapshot nella casella Account di processo, immetti la password per questo account e quindi seleziona OK. Selezionare Avanti.
Nella pagina Completamento procedura guidata immettere AdvWorksSalesOrdersMerge nella casella Nome pubblicazione e selezionare Fine:
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
Connettiti al server di pubblicazione in SQL Server Management Studio, espandi il nodo server e quindi la cartella Replica.
Nella cartella Pubblicazioni locali fare clic con il pulsante destro del mouse su AdvWorksSalesOrdersMerge e quindi selezionare Visualizza stato agente snapshot:
Viene visualizzato lo stato attuale del processo agente di snapshot per la pubblicazione. Assicurarsi che il processo di snapshot sia stato completato correttamente prima di passare alla lezione successiva.
Aggiungere l'accesso dell'Agente di merge al PAL
Connettiti al server di pubblicazione in SQL Server Management Studio, espandi il nodo server e quindi la cartella Replica.
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.
Per altre informazioni, vedi:
Crea una sottoscrizione alla pubblicazione merge
In questa sezione si aggiungerà una sottoscrizione alla pubblicazione di tipo merge creata in precedenza. Questa esercitazione utilizza 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
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. Si avvia la Procedura guidata Nuova sottoscrizione:
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.
Selezionare AdvWorksSalesOrdersMerge e quindi Avanti.
Nella pagina Posizione in cui eseguire l'agente di merge selezionare Esegui ogni agente nel relativo Sottoscrittore e quindi selezionare Avanti:
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.
Nella pagina Sicurezza agente di merge, selezionare il pulsante con i puntini di sospensione (...). 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.
Nella pagina Pianificazione della sincronizzazione impostare Pianificazione agente su Esecuzione solo su richiesta. Selezionare Avanti.
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.
Nella pagina Valori HOST_NAME immettere il valore adventure-works\pamela0 nella casella Valore HOST_NAME. Quindi selezionare Fine.
Selezionare di nuovo Fine. Dopo la creazione della sottoscrizione, selezionare Chiudi.
Impostare le autorizzazioni per il server nel sottoscrittore
Connettersi 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.
Nella pagina Mappatura utenti selezionare il database SalesOrdersReplica e il ruolo db_owner. Nella pagina Securables, concedere l'autorizzazione Explicit per Alter Trace. Seleziona OK.
Creare lo snapshot dei dati filtrati per la sottoscrizione
Connettiti al server di pubblicazione in SQL Server Management Studio, espandi il nodo server e quindi la cartella Replica.
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.
Per altre informazioni, vedi:
- Sottoscrivere le pubblicazioni
- Crea una sottoscrizione pull
- Snapshot per pubblicazioni di tipo merge con filtri con parametri
Sincronizzare la sottoscrizione alla pubblicazione di merge
In questa sezione verrà inizializzata la sottoscrizione avviando l'agente di merge tramite SQL Server Management Studio. Questa procedura viene utilizzata anche per sincronizzarsi con il server di pubblicazione.
Avviare la sincronizzazione e inizializzare la sottoscrizione
Connettersi al sottoscrittore in SQL Server Management Studio.
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.
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.