Strategie per il backup e il ripristino della replica snapshot e della replica transazionaleStrategies for Backing Up and Restoring Snapshot and Transactional Replication

Quando si progetta una strategia di backup e ripristino per la replica snapshot e la replica transazionale, è necessario considerare le tre aree di fattori seguenti:When you design a backup and restore strategy for snapshot and transactional replication, there are three areas to consider:

  • Database di cui eseguire il backup.Which databases to back up.

  • Impostazioni di backup per la replica transazionale.Backup settings for transactional replication.

  • Passaggi richiesti per ripristinare un database,The steps that are required to restore a database. i quali variano in base al tipo di replica e alle opzioni scelte.These depend on the type of replication and options chosen.

    In questo argomento vengono illustrate le tre aree elencate in precedenza.This topic covers each of these areas in the next three sections. Per altre informazioni sul backup e il ripristino per la pubblicazione Oracle, vedere Backup e ripristino di server di pubblicazione Oracle.For information about backup and restore for Oracle publishing, see Backup and Restore for Oracle Publishers.

Backup di databaseBacking up Databases

Per la replica snapshot e la replica transazionale è necessario effettuare a intervalli regolari il backup dei database seguenti:For snapshot and transactional replication, you should regularly back up the following databases:

  • Database di pubblicazione nel server di pubblicazione.The publication database at the Publisher.

  • Database di distribuzione nel database di distribuzione.The distribution database at the Distributor.

  • Database di sottoscrizione in ogni Sottoscrittore.The subscription database at each Subscriber.

  • Database di sistema master e msdb nel server di pubblicazione, nel database di distribuzione e in tutti i Sottoscrittori.The master and msdb system databases at the Publisher, Distributor and all Subscribers. È necessario che il backup di questi database venga eseguito contemporaneamente e che venga inoltre eseguito nello stesso momento di quello del relativo database di replica.These databases should be backed up at the same time as each other and the relevant replication database. Eseguire ad esempio il backup dei database master e msdb nel server di pubblicazione nello stesso momento in cui si esegue il backup del database di pubblicazione.For example, back up the master and msdb databases at the Publisher at the same time that you back up the publication database. Se il database di pubblicazione viene ripristinato, verificare che i database master e msdb siano consistenti con il database di pubblicazione in termini di impostazioni e configurazione della replica.If the publication database is restored, make sure that the master and msdb databases are consistent with the publication database with regard to replication configuration and settings.

    Se si eseguono backup regolari del log, le eventuali modifiche correlate alla replica dovrebbero essere incluse nei backup del log.If you perform regular log backups, any replication-related changes should be captured in the log backups. Se non si eseguono i backup del log, è necessario eseguire un backup ogni volta che un'impostazione relativa alla replica viene modificata.If you do not perform log backups, a backup should be performed whenever a setting relevant to replication is changed. Per altre informazioni, vedere Common Actions Requiring an Updated Backup.For more information, see Common Actions Requiring an Updated Backup.

Impostazioni di backup per la replica transazionaleBackup Settings for Transactional Replication

La replica transazionale implica l'utilizzo dell'opzione sync with backup , che può essere impostata nel database di distribuzione e nel database di pubblicazione:Transactional replication includes using the sync with backup option, which can be set on the distribution database and the publication database:

  • Si consiglia di impostare sempre questa opzione nel database di distribuzione.We recommend that you always set this option on the distribution database.

    L'impostazione di questa opzione nel database di distribuzione impedisce che le transazioni nel log del database di pubblicazione vengano troncate fino al relativo backup nel database di distribuzione.Setting this option on the distribution database ensures that transactions in the log of the publication database will not be truncated until they have been backed up at the distribution database. È possibile ripristinare lo stato del database di distribuzione al momento dell'ultimo backup. Eventuali transazioni mancanti verranno recapitate dal database di pubblicazione al database di distribuzione.The distribution database can be restored to the last backup, and any missing transactions are delivered from the publication database to the distribution database. La replica continua senza interruzioni.Replication continues unaffected.

    L'impostazione di questa opzione nel database di distribuzione non influisce sulla latenza di replica.Setting this option on the distribution database does not affect replication latency. L'opzione ritarderà tuttavia il troncamento del log nel database di pubblicazione fino a quando non viene eseguito il backup delle transazioni corrispondenti nel database di distribuzione.However, the option will delay the truncation of the log on the publication database until the corresponding transactions in the distribution database have been backed up. Ciò può comportare la creazione di un log delle transazioni di dimensioni maggiori nel database di pubblicazione.(This can create a larger transaction log in the publication database.)

  • Si consiglia di impostare questa opzione nel database di pubblicazione se l'applicazione in uso tollera un'ulteriore latenza.We recommend that you set this option on the publication database if your application can tolerate additional latency.

    L'impostazione di questa opzione nel database di pubblicazione garantisce che le transazioni vengano recapitate al database di distribuzione solo dopo che è stato eseguito il backup nel database di pubblicazione.Setting this option on the publication database ensures that transactions are not delivered to the distribution database until they are backed up at the publication database. Nel server di pubblicazione è quindi possibile ripristinare il backup più recente del database di pubblicazione, evitando che il database di distribuzione disponga di transazioni che risultino mancanti nel database di pubblicazione ripristinato.The last publication database backup can then be restored at the Publisher without any chance of the distribution database having transactions that the restored publication database does not have.

    La latenza e la velocità effettiva sono interessate da questo aspetto, in quanto le transazioni possono essere recapitate al database di distribuzione solo dopo che ne è stato eseguito il backup nel server di pubblicazione.Latency and throughput are affected because transactions cannot be delivered to the distribution database until they have been backed up at the Publisher. Se ad esempio viene eseguito un backup del log delle transazioni ogni cinque minuti, si verifica un'ulteriore latenza di cinque minuti tra l'esecuzione del commit di una transazione nel server di pubblicazione e il recapito della transazione al database di distribuzione e successivamente al Sottoscrittore.For example, if the transaction log is backed up every five minutes, there is an additional five minutes of latency between when a transaction is committed at the Publisher and when the transaction is delivered to the distribution database, and subsequently the Subscriber.

    Nota

    L'opzione sync with backup garantisce la consistenza tra il database di pubblicazione e il database di distribuzione, ma non offre alcuna garanzia contro la perdita dei dati.The sync with backup option ensures consistency between the publication database and the distribution database, but the option does not guarantee against data loss. Se ad esempio il log delle transazioni viene perso, le transazioni di cui è stato eseguito il commit dopo l'ultimo backup del log non saranno disponibili nel database di pubblicazione o nel database di distribuzione.For example, if the transaction log is lost, transactions that have been committed since the last transaction log backup will not be available in the publication database or the distribution database. Questo comportamento è identico a quello di un database non replicato.This is the same behavior as a nonreplicated database.

    Per impostare l'opzione sync with backupTo set the sync with backup option

  • Programmazione Transact-SQLTransact-SQL della replica: Attivare backup coordinati per la replica transazionale (programmazione Transact-SQL della replica)Replication Transact-SQLTransact-SQL programming: Enable Coordinated Backups for Transactional Replication (Replication Transact-SQL Programming)

Ripristino di database interessati da una replicaRestoring Databases Involved in Replication

È possibile ripristinare tutti i database in una topologia di replica se sono disponibili backup recenti e viene eseguita la procedura appropriata.You can restore all databases in a replication topology if recent backups are available and the appropriate steps are followed. La procedura di ripristino per il database di pubblicazione dipende dal tipo di replica e dalle opzioni utilizzate, mentre quella per tutti gli altri database è indipendente da tali fattori.The restore steps for the publication database depend on the type of replication and options that are used; however, the restore steps for all other databases are independent of the type and options.

La replica supporta il ripristino dei database replicati nello stesso server e nello stesso database da cui è stato creato il backup.Replication supports restoring replicated databases to the same server and database from which the backup was created. Se si ripristina un backup di un database replicato in un altro server o database, le impostazioni di replica non potranno essere mantenute.If you restore a backup of a replicated database to another server or database, replication settings cannot be preserved. In questo caso, è necessario ricreare tutte le pubblicazioni e le sottoscrizioni dopo il ripristino dei backup.In this case, you must re-create all publications and subscriptions after backups are restored.

Server di pubblicazionePublisher

Sono disponibili procedure di ripristino per i tipi di replica seguenti:There are restore steps provided for the following types of replication:

  • Replica snapshotSnapshot replication

  • Replica transazionale di sola letturaRead-only transactional replication

  • Replica transazionale con sottoscrizioni aggiornabiliTransactional replication with updating subscriptions

  • Replica transazionale peer-to-peerPeer-to-peer transactional replication

    Il ripristino dei database msdb e master , descritti in questa sezione, è identico per tutti i quattro tipi.The restore of the msdb and master databases, which are also covered in this section, is the same for all four types.

Database di pubblicazione: replica snapshotPublication Database: Snapshot Replication

  1. Ripristinare il backup più recente del database di pubblicazione.Restore the latest backup of the publication database. Andare al passaggio 2.Go to step 2.

  2. Il backup del database di pubblicazione contiene la configurazione più recente per tutte le pubblicazioni e le sottoscrizioni?Does the publication database backup contain the latest configuration for all publications and subscriptions? In caso affermativo, il ripristino viene completato.If yes, the restore is completed. In caso contrario, andare al passaggio 3.If no, go to step 3.

  3. Rimuovere la configurazione della replica dal server di pubblicazione, dal database di distribuzione e dai Sottoscrittori, quindi ricreare la configurazione.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. Il ripristino viene completato.Restore is completed.

    Per altre informazioni su come rimuovere la replica, vedere sp_removedbreplication (Transact-SQL).For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

Database di pubblicazione: replica transazionale di sola letturaPublication Database: Read-Only Transactional Replication

  1. Ripristinare il backup più recente del database di pubblicazione.Restore the latest backup of the publication database. Andare al passaggio 2.Go to step 2.

  2. L'opzione sync with backup era abilitata nel database di pubblicazione prima dell'errore?Was the sync with backup setting enabled on the publication database before the failure? In caso affermativo, andare al passaggio 3. In caso contrario, andare al passaggio 5.If yes, go to step 3; if no, go to step 5.

    Se l'opzione è abilitata, la query SELECT DATABASEPROPERTYEX('<PublicationDatabaseName>', 'IsSyncWithBackup') restituisce "1".If the setting is enabled, the query SELECT DATABASEPROPERTYEX('<PublicationDatabaseName>', 'IsSyncWithBackup') returns '1'.

  3. Il backup ripristinato è completo e aggiornato?Is the restored backup complete and up-to-date? Contiene la configurazione più recente per tutte le pubblicazioni e le sottoscrizioni?Does it contain the latest configuration for all publications and subscriptions? In caso affermativo, il ripristino viene completato.If yes, the restore is completed. In caso contrario, andare al passaggio 4.If no, go to step 4.

  4. Le informazioni di configurazione nel database di pubblicazione ripristinato non sono aggiornate.The configuration information in the restored publication database is not up-to-date. È pertanto necessario assicurarsi che i Sottoscrittori dispongano di tutti i comandi in sospeso nel database di distribuzione, quindi eliminare e ricreare la configurazione della replica.Therefore, you must make sure that the Subscribers have all outstanding commands in the distribution database, and then drop and re-create the replication configuration.

    1. Eseguire l'agente di distribuzione fino a completare la sincronizzazione in tutti i Sottoscrittori dei comandi in sospeso nel database di distribuzione.Run the Distribution Agent until all Subscribers are synchronized with the outstanding commands in the distribution database. Verificare che tutti i comandi vengano recapitati ai Sottoscrittori utilizzando la scheda Comandi non distribuiti in Monitoraggio replica oppure eseguendo una query sulla vista MSdistribution_status nel database di distribuzione.Verify that all commands are delivered to Subscribers by using the Undistributed Commands tab in Replication Monitor or by querying the MSdistribution_status view in the distribution database. Andare al passaggio b.Go to step b.

      Per altre informazioni su come eseguire l'agente di distribuzione, vedere Avviare e arrestare un agente di replica (SQL Server Management Studio) e Concetti di base relativi ai file eseguibili dell'agente di replica.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

      Per altre informazioni su come verificare i comandi, vedere Visualizzare comandi replicati e altre informazioni nel database di distribuzione (programmazione Transact-SQL della replica) e Visualizzare le informazioni ed eseguire attività relative agli agenti associati a una sottoscrizione (Monitoraggio replica).For more information about how to verify commands, see View Replicated Commands and Other Information in the Distribution Database (Replication Transact-SQL Programming) and View Information and Perform Tasks for the Agents Associated With a Subscription (Replication Monitor).

    2. Rimuovere la configurazione della replica dal server di pubblicazione, dal database di distribuzione e dai Sottoscrittori, quindi ricreare la configurazione.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. Quando si ricreano le sottoscrizioni, specificare che i dati sono già disponibili nel Sottoscrittore.When you re-create subscriptions, specify that the Subscriber already has the data. Il ripristino viene completato.The restore is completed.

      Per altre informazioni su come rimuovere la replica, vedere sp_removedbreplication (Transact-SQL).For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

      Per ulteriori informazioni su come specificare che i dati sono già disponibili nel Sottoscrittore, vedere Initialize a Subscription Manually.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

  5. L'opzione sync with backup non è stata impostata nel database di pubblicazione.The sync with backup option was not set on the publication database. Le transazioni che non sono state incluse nel backup ripristinato potrebbero pertanto essere state recapitate al database di distribuzione e ai Sottoscrittori.Therefore, transactions that were not included in the restored backup might have been delivered to the Distributor and Subscribers. È a questo punto necessario assicurarsi che i Sottoscrittori dispongano di tutti i comandi in sospeso nel database di distribuzione, quindi applicare manualmente al database di pubblicazione eventuali transazioni non incluse nel backup ripristinato.You must now make sure that Subscribers have all outstanding commands in the distribution database, and then manually apply to the publication database any transactions that are not included in the restored backup.

    Importante

    Questo processo può comportare il ripristino delle tabelle pubblicate in base a una temporizzazione più recente rispetto a quella di altre tabelle non pubblicate ripristinate dal backup.Performing this process can cause published tables to be restored to a point in time that is more recent than the point in time of other nonpublished tables that are restored from the backup.

    1. Eseguire l'agente di distribuzione fino a completare la sincronizzazione in tutti i Sottoscrittori dei comandi in sospeso nel database di distribuzione.Run the Distribution Agent until all Subscribers are synchronized with the outstanding commands in the distribution database. Verificare che tutti i comandi vengano recapitati ai Sottoscrittori utilizzando la scheda Comandi non distribuiti in Monitoraggio replica oppure eseguendo una query sulla vista MSdistribution_status nel database di distribuzione.Verify that all commands are delivered to Subscribers by using the Undistributed Commands tab in Replication Monitor or by querying the MSdistribution_status view in the distribution database. Andare al passaggio b.Go to step b.

      Per altre informazioni su come eseguire l'agente di distribuzione, vedere Avviare e arrestare un agente di replica (SQL Server Management Studio) e Concetti di base relativi ai file eseguibili dell'agente di replica.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

      Per altre informazioni su come verificare i comandi, vedere Visualizzare comandi replicati e altre informazioni nel database di distribuzione (programmazione Transact-SQL della replica) e Visualizzare le informazioni ed eseguire attività relative agli agenti associati a una sottoscrizione (Monitoraggio replica).For more information about how to verify commands, see View Replicated Commands and Other Information in the Distribution Database (Replication Transact-SQL Programming) and View Information and Perform Tasks for the Agents Associated With a Subscription (Replication Monitor).

    2. Utilizzare l' utilità tablediff o un altro strumento per sincronizzare manualmente il server di pubblicazione con il Sottoscrittore.Use the tablediff utility or another tool to manually synchronize the Publisher with the Subscriber. Questa operazione consente di recuperare i dati del database di sottoscrizione non inclusi nel backup del database di pubblicazione.This enables you to recover data from the subscription database that was not contained in the publication database backup. Andare al passaggio c.Go to step c.

      Per altre informazioni sull'utilità tablediff, vedere Confrontare tabelle replicate al fine di individuare le differenze (programmazione della replica).For more information about the tablediff utility, see Compare Replicated Tables for Differences (Replication Programming).

    3. Il backup ripristinato è completo e aggiornato?Is the restored backup complete and up-to-date? Contiene la configurazione più recente per tutte le pubblicazioni e le sottoscrizioni?Does it contain the latest configuration for all publications and subscriptions? In caso affermativo, eseguire la stored procedure sp_replrestart per risincronizzare i metadati del server di pubblicazione con i metadati del database di distribuzione.If yes, execute the sp_replrestart stored procedure to resynchronize the Publisher metadata with the Distributor metadata. Il ripristino viene completato.The restore is completed. In caso contrario, andare al passaggio d.If no, go to step d.

    4. Rimuovere la configurazione della replica dal server di pubblicazione, dal database di distribuzione e dai Sottoscrittori, quindi ricreare la configurazione.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. Quando si ricreano le sottoscrizioni, specificare che i dati sono già disponibili nel Sottoscrittore.When you re-create subscriptions, specify that the Subscriber already has the data. Il ripristino viene completato.The restore is completed.

      Per altre informazioni su come rimuovere la replica, vedere sp_removedbreplication (Transact-SQL).For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

      Per ulteriori informazioni su come specificare che i dati sono già disponibili nel Sottoscrittore, vedere Initialize a Subscription Manually.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

Database di pubblicazione: replica transazionale con sottoscrizioni aggiornabiliPublication Database: Transactional Replication with Updating Subscriptions

  1. Ripristinare il backup più recente del database di pubblicazione.Restore the latest backup of the publication database. Andare al passaggio 2.Go to step 2.

  2. Eseguire l'agente di distribuzione fino a completare la sincronizzazione in tutti i Sottoscrittori dei comandi in sospeso nel database di distribuzione.Run the Distribution Agent until all Subscribers are synchronized with the outstanding commands in the distribution database. Verificare che tutti i comandi vengano recapitati ai Sottoscrittori utilizzando la scheda Comandi non distribuiti in Monitoraggio replica oppure eseguendo una query sulla vista MSdistribution_status nel database di distribuzione.Verify that all commands are delivered to Subscribers by using the Undistributed Commands tab in Replication Monitor, or by querying the MSdistribution_status view in the distribution database. Andare al passaggio 3.Go to step 3.

    Per altre informazioni su come eseguire l'agente di distribuzione, vedere Avviare e arrestare un agente di replica (SQL Server Management Studio) e Concetti di base relativi ai file eseguibili dell'agente di replica.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

    Per altre informazioni su come verificare i comandi, vedere Visualizzare comandi replicati e altre informazioni nel database di distribuzione (programmazione Transact-SQL della replica) e Visualizzare le informazioni ed eseguire attività relative agli agenti associati a una sottoscrizione (Monitoraggio replica).For more information about how to verify commands, see View Replicated Commands and Other Information in the Distribution Database (Replication Transact-SQL Programming) and View Information and Perform Tasks for the Agents Associated With a Subscription (Replication Monitor).

  3. Se si usano sottoscrizioni ad aggiornamento in coda, connettersi a ogni Sottoscrittore ed eliminare tutte le righe dalla tabella MSreplication_queue (Transact-SQL) nel database di sottoscrizione.If you are using queued updating subscriptions, connect to each Subscriber and delete all rows from the MSreplication_queue (Transact-SQL) table in the subscription database. Andare al passaggio 4.Go to step 4.

    Nota

    Se si utilizzano sottoscrizioni ad aggiornamento in coda e le tabelle contengono colonne Identity, è necessario assicurarsi che dopo un ripristino vengano assegnati gli intervalli di valori Identity corretti.If you are using queued updating subscriptions and any tables contain identity columns, you must make sure that the correct identity ranges are assigned after a restore. Per altre informazioni, vedere Replicare colonne Identity.For more information, see Replicate Identity Columns.

  4. È a questo punto necessario assicurarsi che i Sottoscrittori dispongano di tutti i comandi in sospeso nel database di distribuzione, quindi applicare manualmente al database di pubblicazione eventuali transazioni non incluse nel backup ripristinato.You must now make sure that Subscribers have all outstanding commands in the distribution database, and then manually apply to the publication database any transactions that are not included in the restored backup.

    Importante

    Questo processo può comportare il ripristino delle tabelle pubblicate in base a una temporizzazione più recente rispetto a quella di altre tabelle non pubblicate ripristinate dal backup.Performing this process can cause published tables to be restored to a point in time that is more recent than the point in time of other nonpublished tables that are restored from the backup.

    1. Eseguire l'agente di distribuzione fino a completare la sincronizzazione in tutti i Sottoscrittori dei comandi in sospeso nel database di distribuzione.Run the Distribution Agent until all Subscribers are synchronized with the outstanding commands in the distribution database. Verificare che tutti i comandi vengano recapitati ai Sottoscrittori utilizzando Monitoraggio replica oppure eseguendo una query sulla vista MSdistribution_status nel database di distribuzione.Verify that all commands are delivered to Subscribers by using Replication Monitor or by querying the MSdistribution_status view in the distribution database. Andare al passaggio b.Go to step b.

    2. Utilizzare l' tablediff Utility o un altro strumento per sincronizzare manualmente il server di pubblicazione con il Sottoscrittore.Use the tablediff Utility or another tool to manually synchronize the Publisher with the Subscriber. Questa operazione consente di recuperare i dati del database di sottoscrizione non inclusi nel backup del database di pubblicazione.This enables you to recover data from the subscription database that was not contained in the publication database backup. Andare al passaggio c.Go to step c.

      Per altre informazioni sull'utilità tablediff, vedere Confrontare tabelle replicate al fine di individuare le differenze (programmazione della replica).For more information about the tablediff utility, see Compare Replicated Tables for Differences (Replication Programming).

    3. Il backup ripristinato è completo e aggiornato?Is the restored backup complete and up-to-date? Contiene la configurazione più recente per tutte le pubblicazioni e le sottoscrizioni?Does it contain the latest configuration for all publications and subscriptions? In caso affermativo, eseguire la stored procedure sp_replrestart per risincronizzare i metadati del server di pubblicazione con i metadati del database di distribuzione.If yes, execute the sp_replrestart stored procedure to resynchronize the Publisher metadata with the Distributor metadata. Il ripristino viene completato.The restore is completed. In caso contrario, andare al passaggio d.If no, go to step d.

    4. Rimuovere la configurazione della replica dal server di pubblicazione, dal database di distribuzione e dai Sottoscrittori, quindi ricreare la configurazione.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. Quando si ricreano le sottoscrizioni, specificare che i dati sono già disponibili nel Sottoscrittore.When you re-create subscriptions, specify that the Subscriber already has the data. Il ripristino viene completato.The restore is completed.

      Per altre informazioni su come rimuovere la replica, vedere sp_removedbreplication (Transact-SQL).For more information about how to remove replication, see and sp_removedbreplication (Transact-SQL).

      Per ulteriori informazioni su come specificare che i dati sono già disponibili nel Sottoscrittore, vedere Initialize a Subscription Manually.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

Database di pubblicazione: replica transazionale peer-to-peerPublication Database: Peer-to-Peer Transactional Replication

Nella procedura seguente i database di pubblicazione A, Be C sono inclusi in una topologia di replica transazionale peer-to-peer.In the following steps, publication databases A, B, and C are in a peer-to-peer transactional replication topology. I database A e C sono online e funzionano correttamente. Il database B è il database da ripristinare.Databases A and C are online and functioning properly; database B is the database to be restored. Il processo descritto, specialmente i passaggi 7, 10 e 11, è molto simile al processo per l'aggiunta di un nodo a una topologia peer-to-peer.The process described here, especially steps 7, 10, and 11, is very similar to the process required to add a node to a peer-to-peer topology. Il modo più semplice per eseguire questi passaggi consiste nell'utilizzare la Configurazione guidata topologia peer-to-peer, ma è possibile utilizzare anche stored procedure.The most straightforward way to perform these steps is to use the Configure Peer-to-Peer Topology Wizard, but you can also use stored procedures.

  1. Eseguire gli agenti di distribuzione per sincronizzare le sottoscrizioni nei database A e C. Andare al passaggio 2.Run the Distribution Agents to synchronize the subscriptions at databases A and C. Go to step 2.

    Per altre informazioni su come eseguire l'agente di distribuzione, vedere Avviare e arrestare un agente di replica (SQL Server Management Studio) e Concetti di base relativi ai file eseguibili dell'agente di replica.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

  2. Se il database di distribuzione usato da B è ancora disponibile, eseguire gli agenti di distribuzione per sincronizzare le sottoscrizioni tra i database B e A e tra i database B e C. Andare al passaggio 3.If the distribution database that B uses is still available, run Distribution Agents to synchronize subscriptions between databases B and A and databases and B and C. Go to step 3.

  3. Rimuovere i metadati dal database di distribuzione usato da B eseguendo sp_removedistpublisherdbreplication nel database di distribuzione per B. Andare al passaggio 4.Remove metadata from the distribution database that B uses by executing sp_removedistpublisherdbreplication at the distribution database for B. Go to step 4.

  4. Nei database A e C eliminare le sottoscrizioni della pubblicazione nel database B. Andare al passaggio 5.At databases A and C, drop the subscriptions to the publication at database B. Go to step 5.

    Per ulteriori informazioni sull'eliminazione delle sottoscrizioni, vedere Subscribe to Publications.For more information about how to drop subscriptions, see Subscribe to Publications.

  5. Eseguire un backup del log oppure un backup completo del database A. Andare al passaggio 6.Perform a log backup or full backup of database A. Go to step 6.

  6. Ripristinare il backup del database A nel database B. Il database B contiene ora i dati del database A, ma non la configurazione della replica.Restore the backup of database A at database B. Database B now has the data from database A, but not the replication configuration. Quando si ripristina un backup in un altro server, la replica viene rimossa. La replica è stata quindi rimossa dal database B. Andare al passaggio 7.When you restore a backup to another server, replication is removed; therefore, replication has been removed from database B. Go to step 7.

  7. Ricreare la pubblicazione nel database B e quindi ricreare le sottoscrizioni tra i database A e B. Le sottoscrizioni che interessano il database C vengono gestite in una fase successiva.Re-create the publication at database B, and then re-create subscriptions between databases A and B. (Subscriptions that involve database C are handled at a later stage.).

    1. Ricreare la pubblicazione nel database B. Andare al passaggio b.Re-create the publication at database B. Go to step b.

    2. Ricreare la sottoscrizione nel database B della pubblicazione nel database A, specificando che è necessario inizializzare la sottoscrizione con un backup, ovvero impostando il valore initialize with backup per il parametro @sync_type di sp_addsubscription.Re-create the subscription at database B to the publication at database A, specifying that the subscription should be initialized with a backup (a value of initialize with backup for the @sync_type parameter of sp_addsubscription). Andare al passaggio c.Go to step c.

    3. Ricreare la sottoscrizione nel database A della pubblicazione nel database B, specificando che nel Sottoscrittore sono già disponibili i dati, ovvero impostando il valore replication support only per il parametro @sync_type di sp_addsubscription.Re-create the subscription at database A to the publication at database B, specifying that the Subscriber already has the data (a value of replication support only for the @sync_type parameter of sp_addsubscription). Andare al passaggio 8.Go to step 8.

  8. Eseguire gli agenti di distribuzione per sincronizzare le sottoscrizioni nei database A e B. In presenza di eventuali colonne Identity nelle tabelle pubblicate, andare al passaggio 9.Run the Distribution Agents to synchronize the subscriptions at databases A and B. If there are any identity columns in published tables, go to step 9. In caso contrario, andare al passaggio 10.If not, go to step 10.

  9. In seguito al ripristino, l'intervallo di valori Identity assegnato a ogni tabella nel database A verrà usato anche nel database B. Assicurarsi che il database B ripristinato abbia ricevuto tutte le modifiche del database B bloccato propagate nel database A e nel database C e quindi reinizializzare l'intervallo di valori Identity per ogni tabella.After the restore, the identity range that you assigned for each table in database A would also be used in database B. Make sure that the restored database B has received all changes from the failed database B that were propagated to database A and database C; and then reseed the identity range for each table.

    1. Eseguire sp_requestpeerresponse nel database B e recuperare il parametro di output @request_id.Execute sp_requestpeerresponse at database B and retrieve the output parameter @request_id. Andare al passaggio b.Go to step b.

    2. Per impostazione predefinita, l'agente di distribuzione è impostato per l'esecuzione continua. I token dovrebbero pertanto essere inviati automaticamente a tutti i nodi.By default, the Distribution Agent is set to run continuously; therefore, tokens should be sent to all nodes automatically. Se l'agente di distribuzione non viene eseguito in modalità continua, eseguire l'agente.If the Distribution Agent is not running in continuous mode, run the agent. Per altre informazioni, vedere Concetti di base relativi ai file eseguibili dell’agente di replica o Avviare e arrestare un agente di replica (SQL Server Management Studio).For more information, see Replication Agent Executables Concepts or Start and Stop a Replication Agent (SQL Server Management Studio). Andare al passaggio c.Go to step c.

    3. Eseguire sp_helppeerresponses, specificando il valore @request_id recuperato nel passaggio b.Execute sp_helppeerresponses, providing the @request_id value retrieved in step b. Attendere finché tutti i nodi indicano di avere ricevuto la richiesta peer.Wait until all nodes indicate they have received the peer request. Andare al passaggio d.Go to step d.

    4. Utilizzare DBCC CHECKIDENT per reinizializzare ciascuna tabella nel database B , in modo da garantire l'utilizzo di un intervallo appropriato.Use DBCC CHECKIDENT to reseed each table in database B to make sure that an appropriate range is used. Andare al passaggio 10.Go to step 10.

      Per altre informazioni sulla gestione di intervalli di valori Identity, vedere la sezione "Assegnazione di intervalli per la gestione manuale degli intervalli di valori Identity" in Replicare colonne Identity.For more information about how to manage identity ranges, see the "Assigning ranges for manual identity range management" section of Replicate Identity Columns.

  10. A questo punto, il database B e il database C non sono direttamente connessi, ma riceveranno le modifiche tramite il database A. Se la topologia contiene nodi in cui è eseguito SQL Server 2005SQL Server 2005, andare al passaggio 11. Altrimenti, andare al passaggio 12.At this point, database B and database C are not directly connected, but they will receive changes through database A. If the topology contains any nodes that are running SQL Server 2005SQL Server 2005, go to step 11; otherwise, go to step 12.

  11. Mettere in stato di inattività il sistema e ricreare la sottoscrizione tra i database B e C. Mettere in stato di inattività un sistema significa arrestare le attività sulle tabelle pubblicate in tutti i nodi e verificare che ogni nodo abbia ricevuto tutte le modifiche dagli altri nodi:Quiesce the system, and then re-create the subscription between databases B and C. Quiescing a system involves stopping activity on published tables at all nodes and making sure of that each node has received all changes from all other nodes.

    1. Arrestare qualsiasi attività sulle tabelle pubblicate nella topologia peer-to-peer.Stop all activity on published tables in the peer-to-peer topology. Andare al passaggio b.Go to step b.

    2. Eseguire sp_requestpeerresponse nel database B e recuperare il parametro di output @request_id.Execute sp_requestpeerresponse at database B and retrieve the output parameter @request_id. Andare al passaggio c.Go to step c.

    3. Per impostazione predefinita, l'agente di distribuzione è impostato per l'esecuzione continua. I token dovrebbero pertanto essere inviati automaticamente a tutti i nodi.By default, the Distribution Agent is set to run continuously; therefore, tokens should be sent to all nodes automatically. Se l'agente di distribuzione non viene eseguito in modalità continua, eseguire l'agente.If the Distribution Agent is not running in continuous mode, run the agent. Andare al passaggio d.Go to step d.

    4. Eseguire sp_helppeerresponses, specificando il valore @request_id recuperato nel passaggio b.Execute sp_helppeerresponses, providing the @request_id value retrieved in step b. Attendere finché tutti i nodi indicano di avere ricevuto la richiesta peer.Wait until all nodes indicate they have received the peer request. Andare al passaggio e.Go to step e.

    5. Ricreare la sottoscrizione nel database B della pubblicazione nel database C, specificando che nel Sottoscrittore i dati sono già disponibili.Re-create the subscription at database B to the publication at database C, specifying that the Subscriber already has the data. Andare al passaggio b.Go to step b.

    6. Ricreare la sottoscrizione nel database C della pubblicazione nel database B, specificando che nel Sottoscrittore i dati sono già disponibili.Re-create the subscription at database C to the publication at database B, specifying that the Subscriber already has the data. Andare al passaggio 13.Go to step 13.

  12. Ricreare la sottoscrizione tra i database B e C:Re-create the subscription between databases B and C:

    1. Nel database Beseguire una query sulla tabella MSpeer_lsns per recuperare il numero di sequenza del file di log (LSN) della transazione più recente che il database B ha ricevuto dal database C.At database B, query the MSpeer_lsns table to retrieve the log sequence number (LSN) of the most recent transaction that database B has received from database C.

    2. Ricreare la sottoscrizione nel database B della pubblicazione nel database C, specificando che è necessario inizializzare la sottoscrizione in base al numero LSN, ovvero impostando il valore initialize from lsn per il parametro @sync_type di sp_addsubscription.Re-create the subscription at database B to the publication at database C, specifying that the subscription should be initialized based on LSN (a value of initialize from lsn for the @sync_type parameter of sp_addsubscription). Andare al passaggio b.Go to step b.

    3. Ricreare la sottoscrizione nel database C della pubblicazione nel database B, specificando che nel Sottoscrittore i dati sono già disponibili.Re-create the subscription at database C to the publication at database B, specifying that the Subscriber already has the data. Andare al passaggio 13.Go to step 13.

  13. Eseguire gli agenti di distribuzione per sincronizzare le sottoscrizioni nei database B e C. Il ripristino viene completato.Run the Distribution Agents to synchronize the subscriptions at databases B and C. The restore is completed.

Database msdb (server di pubblicazione)msdb Database (Publisher)

  1. Ripristinare il backup più recente del database msdb .Restore the latest backup of the msdb database.

  2. Il backup ripristinato è completo e aggiornato?Is the restored backup complete and up-to-date? Contiene la configurazione più recente per tutte le pubblicazioni e le sottoscrizioni?Does it contain the latest configuration for all publications and subscriptions? In caso affermativo, il recupero viene completato.If yes, recovery is completed. In caso contrario, andare al passaggio 3.If no, go to step 3.

  3. Ricreare il processo di pulizia dei riferimenti alle sottoscrizioni dagli script di replica.Re-create the subscription cleanup job from your replication scripts. Il recupero viene completato.Recovery is completed.

Database master (server di pubblicazione)master Database (Publisher)

  1. Ripristinare il backup più recente del database master .Restore the latest backup of the master database.

  2. Assicurarsi che il database sia consistente con il database di pubblicazione in termini di impostazioni e configurazione della replica.Make sure that the database is consistent with the publication database with regard to replication configuration and settings.

Database nel database di distribuzioneDatabases at the Distributor

Database di distribuzioneDistribution Database

  1. Ripristinare il backup più recente del database di distribuzione.Restore the latest backup of the distribution database.

  2. L'opzione sync with backup era abilitata nel database di distribuzione prima dell'errore?Was the sync with backup setting enabled on the distribution database before the failure? In caso affermativo, andare al passaggio 3. In caso contrario, andare al passaggio 4.If yes, go to step 3; if no, go to step 4.

    Se l'opzione è abilitata, la query SELECT DATABASEPROPERTYEX('<DistributionDatabaseName>', 'IsSyncWithBackup') restituisce "1".If the setting is enabled, the query SELECT DATABASEPROPERTYEX('<DistributionDatabaseName>', 'IsSyncWithBackup') returns '1'.

  3. Il backup ripristinato è completo e aggiornato?Is the restored backup complete and up-to-date? Contiene la configurazione più recente per tutte le pubblicazioni e le sottoscrizioni?Does it contain the latest configuration for all publications and subscriptions? In caso affermativo, il recupero viene completato.If yes, recovery is completed. In caso contrario, andare al passaggio 4.If no, go to step 4.

  4. Le informazioni di configurazione nel database di distribuzione ripristinato non sono aggiornate o l'opzione sync with backup non è stata impostata nel database di distribuzione.Either the configuration information in the restored distribution database is not up-to-date, or the sync with backup option was not set on the distribution database. Dopo il ripristino, è possibile che nel database di distribuzione manchino le transazioni di cui è stato eseguito il commit nel server di pubblicazione, ma che non sono state ancora recapitate ai Sottoscrittori. Eliminare e ricreare la replica, quindi eseguire la convalida.(After the restore, the distribution database might be missing transactions that were committed at the Publisher but have not yet been delivered to Subscribers.) Drop and re-create replication, and then run validation.

    1. Rimuovere la configurazione della replica dal server di pubblicazione, dal database di distribuzione e dai Sottoscrittori, quindi ricreare la configurazione.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. Quando si ricreano le sottoscrizioni, specificare che i dati sono già disponibili nel Sottoscrittore.When you re-create subscriptions, specify that the Subscriber already has the data. Andare al passaggio b.Go to step b.

      Per altre informazioni su come rimuovere la replica, vedere sp_removedbreplication (Transact-SQL).For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

      Per ulteriori informazioni su come specificare che i dati sono già disponibili nel Sottoscrittore, vedere Initialize a Subscription Manually.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

    2. Contrassegnare tutte le pubblicazioni per la convalida.Mark all publications for validation. Reinizializzare eventuali sottoscrizioni che non superano la convalida.Reinitialize any subscriptions that fail validation. Il recupero viene completato.Recovery is completed.

      Per ulteriori informazioni sulla convalida, vedere Validate Replicated Data.For more information about validation, see Validate Replicated Data. Per altre informazioni sulla reinizializzazione, vedere Reinizializzare le sottoscrizioni.For more information about reinitialization, see Reinitialize Subscriptions.

Database msdb (database di distribuzione)msdb Database (Distributor)

  1. Ripristinare il backup più recente del database msdb .Restore the latest backup of the msdb database.

  2. Il backup ripristinato è completo e aggiornato?Is the restored backup complete and up-to-date? Contiene la configurazione più recente per tutte le pubblicazioni e le sottoscrizioni?Does it contain the latest configuration for all publications and subscriptions? In caso affermativo, il recupero viene completato.If yes, recovery is completed. In caso contrario, andare al passaggio 3.If no, go to step 3.

  3. Rimuovere la configurazione della replica dal server di pubblicazione, dal database di distribuzione e dai Sottoscrittori, quindi ricreare la configurazione.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. Quando si ricreano le sottoscrizioni, specificare che i dati sono già disponibili nel Sottoscrittore.When you re-create subscriptions, specify that the Subscriber already has the data. Andare al passaggio 4.Go to step 4.

    Per altre informazioni su come rimuovere la replica, vedere sp_removedbreplication (Transact-SQL).For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

    Per ulteriori informazioni su come specificare che i dati sono già disponibili nel Sottoscrittore, vedere Initialize a Subscription Manually.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

  4. Contrassegnare tutte le pubblicazioni per la convalida.Mark all publications for validation. Reinizializzare eventuali sottoscrizioni che non superano la convalida.Reinitialize any subscriptions that fail validation. Il recupero viene completato.Recovery is completed.

    Per ulteriori informazioni sulla convalida, vedere Validate Replicated Data.For more information about validation, see Validate Replicated Data. Per altre informazioni sulla reinizializzazione, vedere Reinizializzare le sottoscrizioni.For more information about reinitialization, see Reinitialize Subscriptions.

Database master (database di distribuzione)master Database (Distributor)

  1. Ripristinare il backup più recente del database master .Restore the latest backup of the master database.

  2. Assicurarsi che il database sia consistente con il database di pubblicazione in termini di impostazioni e configurazione della replica.Make sure that the database is consistent with the publication database with regard to replication configuration and settings.

Database nel SottoscrittoreDatabases at the Subscriber

Database di sottoscrizioneSubscription Database

  1. L'ultimo backup del database di sottoscrizione è più recente dell'impostazione minima relativa alla memorizzazione per la distribuzione nel database di distribuzione?Is the latest subscription database backup more recent than the minimum distribution retention setting on the distribution database? Questo aspetto determina se il database di distribuzione disponga ancora di tutti i comandi necessari per aggiornare il Sottoscrittore. In caso affermativo, andare al passaggio 2.(This determines whether the Distributor still has all the commands that are required to bring the Subscriber up-to-date.) If yes, go to step 2. In caso contrario, reinizializzare la sottoscrizione.If no, reinitialize the subscription. Il recupero viene completato.Recovery is completed.

    Per determinare l'impostazione massima relativa alla memorizzazione per la distribuzione, eseguire sp_helpdistributiondb e recuperare il valore dalla colonna max_distretention . Questo valore è espresso in ore.To determine the maximum distribution retention setting, execute sp_helpdistributiondb and retrieve the value from the max_distretention column (this value is in hours).

    Per ulteriori informazioni sulla reinizializzazione di una sottoscrizione, vedere Reinitialize a Subscription.For more information about how to reinitialize a subscription, see Reinitialize a Subscription.

  2. Ripristinare il backup del database di sottoscrizione più recente.Restore the latest subscription database backup. Andare al passaggio 3.Go to step 3.

  3. Se il database di sottoscrizione contiene solo sottoscrizioni push, andare al passaggio 4.If the subscription database contains only push subscriptions, go to step 4. Se il database di sottoscrizione contiene sottoscrizioni pull, determinare quanto segue: le informazioni sulla sottoscrizione sono aggiornate?If the subscription database contains any pull subscriptions, ask the following questions: Is the subscription information current? Nel database sono incluse tutte le tabelle e le opzioni impostate al momento dell'errore?Does the database include all tables and options that were set at the time of failure. In caso affermativo, andare al passaggio 4.If yes, go to step 4. In caso contrario, reinizializzare la sottoscrizione.If no, reinitialize the subscription. Il recupero viene completato.Recovery is completed.

  4. Per sincronizzare il Sottoscrittore, eseguire l'agente di distribuzione.To synchronize the Subscriber, run the Distribution Agent. Il recupero viene completato.Recovery is completed.

    Per altre informazioni su come eseguire l'agente di distribuzione, vedere Avviare e arrestare un agente di replica (SQL Server Management Studio) e Concetti di base relativi ai file eseguibili dell'agente di replica.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

Database msdb (Sottoscrittore)msdb Database (Subscriber)

  1. Ripristinare il backup più recente del database msdb .Restore the latest backup of the msdb database. Nel Sottoscrittore vengono utilizzate sottoscrizioni pull?Are pull subscriptions used at this Subscriber? In caso di risposta negativa, il ripristino viene completato.If no, the restore is completed. In caso affermativo, andare al passaggio 2.If yes, go to step 2.

  2. Il backup ripristinato è completo e aggiornato?Is the restored backup complete and up-to-date? Contiene la configurazione più recente per tutte le sottoscrizioni pull?Does it contain the latest configuration for all pull subscriptions? In caso affermativo, il recupero viene completato.If yes, recovery is completed. In caso contrario, andare al passaggio 3.If no, go to step 3.

  3. Eliminare e ricreare le sottoscrizioni pull.Drop and re-create the pull subscriptions. Quando si ricreano le sottoscrizioni, specificare che i dati sono già disponibili nel Sottoscrittore.When you re-create the subscriptions, specify that the Subscriber already has the data. Il ripristino viene completato.The restore is completed.

    Per ulteriori informazioni sull'eliminazione delle sottoscrizioni, vedere Subscribe to Publications.For more information about how to drop subscriptions, see Subscribe to Publications.

    Per ulteriori informazioni su come specificare che i dati sono già disponibili nel Sottoscrittore, vedere Initialize a Subscription Manually.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

Database master (Sottoscrittore)master Database (Subscriber)

  1. Ripristinare il backup più recente del database master .Restore the latest backup of the master database.

  2. Assicurarsi che il database sia consistente con il database di pubblicazione in termini di impostazioni e configurazione della replica.Make sure that the database is consistent with the publication database with regard to replication configuration and settings.

Vedere ancheSee Also

Backup e ripristino di database SQL Server Back Up and Restore of SQL Server Databases
Eseguire il backup e ripristino di database replicati Back Up and Restore Replicated Databases
Configurare la distribuzione Configure Distribution
Pubblicare dati e oggetti di database Publish Data and Database Objects
Subscribe to Publications Subscribe to Publications
Inizializzare una sottoscrizione Initialize a Subscription
Sincronizzare i dati Synchronize Data