Replica snapshotSnapshot Replication

La replica snapshot distribuisce i dati così come appaiono in uno determinato momento e non prevede il monitoraggio degli aggiornamenti ai dati.Snapshot replication distributes data exactly as it appears at a specific moment in time and does not monitor for updates to the data. Quando viene eseguita la sincronizzazione, viene generato e inviato ai Sottoscrittori l'intero snapshot.When synchronization occurs, the entire snapshot is generated and sent to Subscribers.

Nota

È possibile utilizzare la replica snapshot autonomamente, ma il processo di snapshot (che crea una copia di tutti gli oggetti e dati specificati da una pubblicazione) viene anche comunemente utilizzato per fornire il set iniziale di dati e oggetti di database per le pubblicazioni transazionali e di tipo merge.Snapshot replication can be used by itself, but the snapshot process (which creates a copy of all of the objects and data specified by a publication) is also commonly used to provide the initial set of data and database objects for transactional and merge publications.

L'utilizzo della replica snapshot in modo autonomo si rivela maggiormente appropriato in presenza di una o più delle condizioni seguenti:Using snapshot replication by itself is most appropriate when one or more of the following is true:

  • I dati vengono modificati raramente.Data changes infrequently.

  • L'utilizzo temporaneo di copie di dati non aggiornate rispetto al server di pubblicazione è accettabile.It is acceptable to have copies of data that are out of date with respect to the Publisher for a period of time.

  • Vengono replicati volumi ridotti di dati.Replicating small volumes of data.

  • Viene apportato un ingente volume di modifiche in un breve periodo di tempo.A large volume of changes occurs over a short period of time.

    La replica snapshot è maggiormente appropriata in caso di modifiche di dati sostanziali ma non frequenti.Snapshot replication is most appropriate when data changes are substantial but infrequent. Se, ad esempio, un'organizzazione addetta alle vendite gestisce un listino prezzi dei prodotti e i prezzi vengono aggiornati contemporaneamente una o due volte all'anno, è consigliabile eseguire la replica dell'intero snapshot di dati dopo che è stato modificato.For example, if a sales organization maintains a product price list and the prices are all updated at the same time once or twice each year, replicating the entire snapshot of data after it has changed is recommended. Data la natura di determinati tipi di dati, può essere consigliabile eseguire snapshot più frequenti.Given certain types of data, more frequent snapshots may also be appropriate. Se, ad esempio, una tabella relativamente piccola viene aggiornata sul server di pubblicazione nel corso della giornata ma un minimo di latenza è tollerata, le modifiche possono essere recapitate durante la notte sotto forma di snapshot.For example, if a relatively small table is updated at the Publisher during the day, but some latency is acceptable, changes can be delivered nightly as a snapshot.

    La replica snapshot presenta un overhead continuo più basso sul server di pubblicazione rispetto alla replica transazionale, in quanto le modifiche incrementali non vengono rilevate.Snapshot replication has a lower continuous overhead on the Publisher than transactional replication, because incremental changes are not tracked. Se, tuttavia, il set di dati replicato è molto ampio, sarà necessario un numero significativo di risorse per generare e applicare lo snapshot.However, if the dataset set being replicated is very large, it will require substantial resources to generate and apply the snapshot. Per valutare l'opportunità o meno di utilizzare la replica snapshot, considerare la dimensione dell'intero set di dati e la frequenza delle modifiche ai dati.Consider the size of the entire data set and the frequency of changes to the data when evaluating whether to utilize snapshot replication.

    Contenuto dell'argomentoIn this topic

    Funzionamento della replica snapshotHow Snapshot Replication Works

    agente snapshotSnapshot Agent

    Agenti di distribuzione e di mergeDistribution and Merge Agents

Funzionamento della replica snapshot How Snapshot Replication Works

Per impostazione predefinita, tutti e tre i tipi di replica utilizzano uno snapshot per inizializzare i Sottoscrittori.By default, all three types of replication use a snapshot to initialize Subscribers. L'agente snapshot di SQL ServerSQL Server genera sempre file di snapshot ma l'agente che recapita i file varia a seconda del tipo di replica in uso.The SQL ServerSQL Server Snapshot Agent always generates the snapshot files, but the agent that delivers the files differs depending on the type of replication being used. La replica snapshot e la replica transazionale utilizzano l'agente di distribuzione per recapitare i file, mentre la replica di tipo merge utilizza l'agente di merge di SQL ServerSQL Server .Snapshot replication and transactional replication use the Distribution Agent to deliver the files, whereas merge replication uses the SQL ServerSQL Server Merge Agent. L'agente snapshot viene eseguito nel server di distribuzione.The Snapshot Agent runs at the Distributor. L'agente di distribuzione e l'agente di merge vengono eseguiti nel database di distribuzione per le sottoscrizioni push o nei Sottoscrittori per le sottoscrizioni pull.The Distribution Agent and Merge Agent run at the Distributor for push subscriptions, or at Subscribers for pull subscriptions.

Gli snapshot possono essere generati e applicati immediatamente dopo la creazione della sottoscrizione oppure in base a un set di pianificazioni durante la creazione della pubblicazione.Snapshots can be generated and applied either immediately after the subscription is created or according to a schedule set at the time the publication is created. L'agente snapshot prepara i file di snapshot contenenti lo schema e i dati delle tabelle pubblicate e degli oggetti di database, archivia i file nella cartella snapshot del server di pubblicazione e registra le informazioni di rilevamento nel database di distribuzione del server di distribuzione.The Snapshot Agent prepares snapshot files containing the schema and data of published tables and database objects, stores the files in the snapshot folder for the Publisher, and records tracking information in the distribution database on the Distributor. Durante la configurazione di un database di distribuzione viene specificata una cartella snapshot predefinita, ma è anche possibile indicare una posizione alternativa per una pubblicazione in aggiunta a quella predefinita o al posto di questa.You specify a default snapshot folder when you configure a Distributor, but you can specify an alternate location for a publication instead of or in addition to the default.

Oltre al processo di snapshot standard descritto in questo argomento, viene utilizzato un processo di snapshot a due parti per le pubblicazioni di tipo merge che utilizzano filtri con parametri.In addition to the standard snapshot process described in this topic, a two-part snapshot process is used for merge publications with parameterized filters.

Nella figura seguente vengono illustrati i componenti principali della replica snapshot.The following illustration shows the principal components of snapshot replication.

Componenti e flusso di dati per la replica snapshotSnapshot replication components and data flow

agente snapshot Snapshot Agent

Per la replica di tipo merge, viene generato uno snapshot a ogni esecuzione dell'agente snapshot.For merge replication, a snapshot is generated every time the Snapshot Agent runs. Per la replica transazionale, la generazione dello snapshot dipende dall'impostazione della proprietà di pubblicazione immediate_sync.For transactional replication, snapshot generation depends on the setting of the publication property immediate_sync. Se tale proprietà è impostata su TRUE, ovvero il valore predefinito quando si utilizza la Creazione guidata nuova pubblicazione, viene generato uno snapshot ogni volta che viene eseguito l'agente snapshot, che può essere applicato a un Sottoscrittore in qualsiasi momento.If the property is set to TRUE (the default when using the New Publication Wizard), a snapshot is generated every time the Snapshot Agent runs, and it can be applied to a Subscriber at any time. Se invece è impostata su FALSE, ovvero il valore predefinito quando si utilizza sp_addpublication, lo snapshot viene generato solo se è stata aggiunta una nuova sottoscrizione dopo l'ultima esecuzione dell'agente snapshot. Per poter eseguire la sincronizzazione, è necessario che i sottoscrittori attendano il completamento dell'agente snapshot.If the property is set to FALSE (the default when using sp_addpublication), the snapshot is generated only if a new subscription has been added since the last Snapshot Agent run; Subscribers must wait for the Snapshot Agent to complete before they can synchronize.

L'agente snapshot esegue la procedura seguente:The Snapshot Agent performs the following steps:

  1. Stabilisce una connessione dal server di distribuzione al server di pubblicazione, quindi imposta dei blocchi sulle tabelle pubblicate, se necessario:Establishes a connection from the Distributor to the Publisher, and then takes locks on published tables if necessary:

    • Per le pubblicazioni di tipo merge, l'agente snapshot non imposta alcun blocco.For merge publications, the Snapshot Agent does not take any locks.

    • Per le pubblicazioni transazionali, per impostazione predefinita l'agente snapshot imposta dei blocchi solo durante la fase iniziale della generazione degli snapshot.For transactional publications, by default the Snapshot Agent take locks only during the initial phase of snapshot generation.

    • Per le pubblicazioni snapshot, i blocchi vengono mantenuti durante l'intero processo di generazione degli snapshot.For snapshot publications, locks are held during the entire snapshot generation process.

  2. Scrive in un file con estensione sch una copia dello schema della tabella.Writes a copy of the table schema for each article to a .sch file. Se vengono pubblicati altri oggetti di database, ad esempio indici, vincoli, stored procedure, viste, funzioni definite dall'utente e così via, verranno generati file script aggiuntivi.If other database objects are published, such as indexes, constraints, stored procedures, views, user-defined functions, and so on, additional script files are generated.

  3. Copia i dati dalla tabella pubblicata nel server di pubblicazione e scrive i dati nella cartella snapshot.Copies the data from the published table at the Publisher and writes the data to the snapshot folder. Lo snapshot viene generato come set di file di programma per la copia bulk (BCP).The snapshot is generated as a set of bulk copy program (BCP) files.

  4. Per le pubblicazioni snapshot e transazionali, l'agente snapshot aggiunge righe alle tabelle MSrepl_commands e MSrepl_transactions nel database di distribuzione.For snapshot and transactional publications, the Snapshot Agent appends rows to the MSrepl_commands and MSrepl_transactions tables in the distribution database. Le voci della tabella MSrepl_commands sono comandi che indicano la posizione dei file con estensione sch e bcp, di qualsiasi altro file di snapshot e dei riferimenti a qualsiasi script pre-snapshot o post-snapshot.The entries in the MSrepl_commands table are commands indicating the location of .sch and .bcp files, any other snapshot files, and references to any pre- or post-snapshot scripts. Le voci della tabella MSrepl_transactions sono comandi rilevanti per la sincronizzazione del Sottoscrittore.The entries in the MSrepl_transactions table are commands relevant to synchronizing the Subscriber.

    Per le pubblicazioni di tipo merge, l'agente snapshot esegue operazioni aggiuntive.For merge publications, the Snapshot Agent performs additional steps.

  5. Rilascia gli eventuali blocchi sulle tabelle pubblicate.Releases any locks on published tables.

    Durante la generazione degli snapshot, non è possibile apportare modifiche di schema nelle tabelle pubblicate.During snapshot generation, you cannot make schema changes on published tables. Dopo avere generato i file di snapshot, è possibile visualizzarli nella cartella snapshot tramite Esplora risorse.After the snapshot files are generated, you can view them in the snapshot folder using Windows Explorer.

Agente di distribuzione e di merge Distribution Agent and Merge Agent

Per le applicazioni snapshot, ogni volta che l'agente di distribuzione viene eseguito per la pubblicazione, un nuovo snapshot viene spostato in ogni Sottoscrittore che non è stato ancora sincronizzato, è stato contrassegnato per la reinizializzazione o include nuovi articoli.For snapshot publications, each time the Distribution Agent runs for the publication, it moves a new snapshot to each Subscriber that has not yet been synchronized, has been marked for reinitialization, or includes new articles.

Per la replica snapshot e transazionale, l'agente di distribuzione esegue la procedura seguente:For snapshot and transactional replication, the Distribution Agent performs the following steps:

  1. Stabilisce una connessione con il server di distribuzione.Establishes a connection to the Distributor.

  2. Esamina le tabelle MSrepl_commands e MSrepl_transactions nel database di distribuzione del server di distribuzione.Examines the MSrepl_commands and MSrepl_transactions tables in the distribution database on the Distributor. L'agente legge nella prima tabella la posizione dei file di snapshot e in entrambe le tabelle i comandi di sincronizzazione del Sottoscrittore.The agent reads the location of the snapshot files from the first table and Subscriber synchronization commands from both tables.

  3. Applica lo schema e i comandi al database di sottoscrizione.Applies the schema and commands to the subscription database.

    Per una pubblicazione per la replica di tipo merge non filtrata, l'agente di merge esegue la procedura seguente:For an unfiltered merge replication publication, the Merge Agent performs the following steps:

  4. Stabilisce una connessione con il server di pubblicazione.Establishes a connection to the Publisher.

  5. Esamina la tabella sysmergeschemachange sul server di pubblicazione e stabilisce se è presente un nuovo snapshot da applicare al Sottoscrittore.Examines the sysmergeschemachange table on the Publisher and determines whether there is a new snapshot that should be applied at the Subscriber.

  6. In caso affermativo, l'agente di merge applica al database di sottoscrizione i file di snapshot dalla posizione specificata in sysmergeschemachange.If a new snapshot is available, the Merge Agent applies to the subscription database the snapshot files from the location specified in sysmergeschemachange.