Log shipping e replica (SQL Server)Log Shipping and Replication (SQL Server)

Il log shipping coinvolge due copie di un unico database che in genere risiedono in computer diversi.Log shipping involves two copies of a single database that typically reside on different computers. In un momento dato solo una copia del database risulta disponibile per i client.At any given time, only one copy of the database is currently available to clients. Questa copia è nota come database primario.This copy is known as the primary database. Gli aggiornamenti al database primario apportati dai client vengono propagati attraverso il log shipping all'altra copia del database, nota come database secondario.Updates made by clients to the primary database are propagated by means of log shipping to the other copy of the database, known as the secondary database. Il processo di log shipping prevede l'applicazione nel database secondario del log delle transazioni relativo a ogni operazione di inserimento, aggiornamento o eliminazione eseguita sul database primario.Log shipping involves applying the transaction log from every insertion, update, or deletion made on the primary database onto the secondary database.

Quando il log shipping viene utilizzato in combinazione con la replica, si noti quanto segue:Log shipping can be used in conjunction with replication, with the following behavior:

  • La replica non continua in caso di failover del server del log shipping.Replication does not continue after a log shipping failover. Se si verifica il failover, gli agenti di replica non si connettono al server secondario. In questo modo le transazioni non vengono replicate nei Sottoscrittori.If a failover occurs, replication agents do not connect to the secondary, so transactions are not replicated to Subscribers. Se si verifica il failback nel server primario, la replica viene ripresa.If a failback to the primary occurs, replication resumes. Tutte le transazioni copiate durante il log shipping dal server secondario a quello primario vengono replicate nei Sottoscrittori.All transactions that log shipping copies from the secondary back to the primary are replicated to Subscribers.

  • Se il database primario viene perso definitivamente, è possibile rinominare il database secondario affinché la replica possa continuare.If the primary is permanently lost, the secondary can be renamed so that replication can continue. Nella parte restante dell'argomento vengono descritti i requisiti e le procedure necessari in questo caso.The remainder of this topic describes the requirements and procedures for handling this case. Nell'esempio seguente viene utilizzato il database di pubblicazione, ovvero il database più comune per cui eseguire il log shipping. Le operazioni possono tuttavia essere eseguite nei database di sottoscrizione e di distribuzione.The example given is the publication database, which is the most common database to log ship, but a similar process can also be applied to subscription and distribution databases.

    Per informazioni sul recupero di database oggetto di replica senza dover riconfigurare la replica, vedere Backup e ripristino di database replicati.For information about recovering databases involved in replication without any need to reconfigure replication, see Back Up and Restore Replicated Databases.

Nota

Per garantire la disponibilità del database di pubblicazione è consigliabile utilizzare il mirroring del database invece del log shipping.We recommend using database mirroring, rather than log shipping, to provide availability for the publication database. Per altre informazioni, vedere Mirroring e replica del database (SQL Server).For more information, see Database Mirroring and Replication (SQL Server).

Requisiti e procedure per la replica dal database secondario se quello primario viene persoRequirements and Procedures for Replicating from the Secondary If the Primary Is Lost

Tenere presenti i requisiti e le considerazioni seguenti:Be aware of the following requirements and considerations:

  • Se nel server primario sono inclusi più database di pubblicazione, distribuire i log per tutti i database di pubblicazione allo stesso server secondario.If a primary contains more than one publication database, log ship all of the publication databases to the same secondary.

  • Il percorso di installazione dell'istanza del server secondario deve corrispondere a quello dell'istanza del server primario.The installation path for the secondary server instance must be the same as the primary. I percorsi dei database utente nel server secondario devono corrispondere a quelli nel server primario.User database locations on the secondary server must be the same as on the primary.

  • Eseguire il backup della chiave master del servizio nel server primario.Back up the service master key at the primary. La chiave verrà ripristinata nel server secondario.This key will be restored at the secondary. Per altre informazioni, vedere BACKUP SERVICE MASTER KEY (Transact-SQL).For more information, see BACKUP SERVICE MASTER KEY (Transact-SQL).

  • Il log shipping non costituisce una garanzia completa contro la perdita di dati.Log shipping does not guarantee against data loss. Un errore nel database primario può provocare la perdita di dati di cui non è ancora stato eseguito il backup o di copie di backup andate perse quando si è verificato l'errore.A failure on the primary database can result in the loss of data that has not yet been backed up or for backups that are lost during the failure.

Log shipping con replica transazionaleLog Shipping with Transactional Replication

Nel caso della replica transazionale, il funzionamento del log shipping dipende dall'opzione sync with backup .For transactional replication, the behavior of log shipping depends on the sync with backup option. Questa opzione può essere impostata nel database di pubblicazione e nel database di distribuzione. Nel caso del log shipping per il server di pubblicazione, è importante che l'opzione sia impostata nel database di pubblicazione.This option can be set on the publication database and distribution database; in log shipping for the Publisher, only the setting on the publication database is relevant.

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. L'ultimo backup del database di pubblicazione può quindi essere ripristinato nel server secondario. In questo modo il database di distribuzione avrà le stesse transazioni del database di pubblicazione ripristinato.The last publication database backup can then be restored at the secondary server without any possibility of the distribution database having transactions that the restored publication database does not have. Questa opzione garantisce la consistenza tra server di pubblicazione, server di distribuzione e Sottoscrittori in caso di failover del server di pubblicazione in un server secondario.This option guarantees that if the Publisher fails over to a secondary server, consistency is maintained between the Publisher, Distributor, and Subscribers. L'impostazione di questa opzione ha effetto sulla latenza e sulla velocità effettiva in quanto le transazioni non possono essere recapitate al database di distribuzione finché non ne viene eseguito il backup nel server di pubblicazione. Se l'applicazione in uso consente questa latenza, è consigliabile impostare l'opzione nel database 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; if your application can tolerate this latency, we recommend that you set this option on the publication database. Se l'opzione sync with backup non è impostata, i Sottoscrittori potrebbero ricevere modifiche che non sono più incluse nel database recuperato nel server secondario.If the sync with backup option is not set, Subscribers might receive changes that are no longer included in the recovered database at the secondary server. Per altre informazioni, vedere Strategie per il backup e il ripristino della replica snapshot e della replica transazionale.For more information, see Strategies for Backing Up and Restoring Snapshot and Transactional Replication.

Per configurare la replica transazionale e il log shipping con l'opzione sync with backupTo configure transactional replication and log shipping with the sync with backup option

  1. Se l'opzione sync with backup non è impostata nel database di pubblicazione, eseguire sp_replicationdboption '<publicationdatabasename>', 'sync with backup', 'true'.If the sync with backup option is not set on the publication database, execute sp_replicationdboption '<publicationdatabasename>', 'sync with backup', 'true'. Per altre informazioni, vedere sp_replicationdboption (Transact-SQL).For more information, see sp_replicationdboption (Transact-SQL).

  2. Configurare il log shipping per il database di pubblicazione.Configure log shipping for the publication database. Per altre informazioni, vedere Configurare il log shipping (SQL Server).For more information, see Configure Log Shipping (SQL Server).

  3. Se si verifica un errore nel server di pubblicazione, ripristinare l'ultimo log del database nel server secondario mediante l'opzione KEEP_REPLICATION di RESTORE LOG.If the Publisher fails, restore the last log of the database to the secondary server, using the KEEP_REPLICATION option of RESTORE LOG. In questo modo vengono mantenute tutte le impostazioni di replica per il database.This retains all replication settings for the database. Per altre informazioni, vedere Failover su un database secondario per il log shipping (SQL Server) e RESTORE (Transact-SQL).For more information, see Fail Over to a Log Shipping Secondary (SQL Server) and RESTORE (Transact-SQL).

  4. Ripristinare i database msdb e master dal server primario al server secondario.Restore the msdb database and master databases from the primary to the secondary. Per altre informazioni, vedere Backup e ripristino di Database di sistema (SQL Server).For more information, see Back Up and Restore of System Databases (SQL Server). Se il server primario è anche un server di distribuzione, ripristinare il database di distribuzione dal server primario a quello secondario.If the primary was also a Distributor, restore the distribution database from the primary to the secondary.

    Le impostazioni e la configurazione di replica di questi database devono essere consistenti con quelle del database di pubblicazione nel server primario.These databases must be consistent with the publication database at the primary in terms of replication configuration and settings.

  5. Nel server secondario rinominare il computer e quindi l'istanza di SQL ServerSQL Server in modo che i nuovi nomi corrispondano al nome del server primario.At the secondary server, rename the computer and then rename the SQL ServerSQL Server instance to match the primary server name. Per informazioni sulla ridenominazione di un computer, vedere la documentazione di Windows.For information about renaming the computer, see the Windows documentation. Per informazioni sulla ridenominazione del server, vedere Rinominare un computer che ospita un'istanza autonoma di SQL Server e Ridenominare un'istanza del cluster di failover di SQL Server.For information about renaming the server, see Rename a Computer that Hosts a Stand-Alone Instance of SQL Server and Rename a SQL Server Failover Cluster Instance.

  6. Nel server secondario ripristinare la chiave master del servizio di cui è stato eseguito il backup dal server primario.At the secondary server, restore the service master key that was backed up from the primary. Per altre informazioni, vedere RESTORE SERVICE MASTER KEY (Transact-SQL).For more information, see RESTORE SERVICE MASTER KEY (Transact-SQL).

    Per configurare la replica transazionale e il log shipping senza l'opzione sync with backupTo configure transactional replication and log shipping without the sync with backup option

  7. Configurare il log shipping per il database di pubblicazione.Configure log shipping for the publication database. Per altre informazioni, vedere Configurare il log shipping (SQL Server).For more information, see Configure Log Shipping (SQL Server).

  8. Se si verifica un errore nel server di pubblicazione, ripristinare l'ultimo log del database nel server secondario mediante l'opzione KEEP_REPLICATION di RESTORE LOG.If the Publisher fails, restore the last log of the database to the secondary server, using the KEEP_REPLICATION option of RESTORE LOG. In questo modo vengono mantenute tutte le impostazioni di replica per il database.This retains all replication settings for the database. Per altre informazioni, vedere Failover su un database secondario per il log shipping (SQL Server) e RESTORE (Transact-SQL).For more information, see Fail Over to a Log Shipping Secondary (SQL Server) and RESTORE (Transact-SQL).

  9. Ripristinare i database msdb e master dal server primario al server secondario.Restore the msdb database and master databases from the primary to the secondary. Per altre informazioni, vedere Backup e ripristino di Database di sistema (SQL Server).For more information, see Back Up and Restore of System Databases (SQL Server). Se il server primario è anche un server di distribuzione, ripristinare il database di distribuzione dal server primario a quello secondario.If the primary was also a Distributor, restore the distribution database from the primary to the secondary.

    Le impostazioni e la configurazione di replica di questi database devono essere consistenti con quelle del database di pubblicazione nel server primario.These databases must be consistent with the publication database at the primary in terms of replication configuration and settings.

  10. Nel server secondario rinominare il computer e quindi l'istanza di SQL ServerSQL Server in modo che i nuovi nomi corrispondano al nome del server primario.At the secondary server, rename the computer and then rename the SQL ServerSQL Server instance to match the primary server name. Per informazioni sulla ridenominazione di un computer, vedere la documentazione di Windows.For information about renaming the computer, see the Windows documentation. Per informazioni sulla ridenominazione del server, vedere Rinominare un computer che ospita un'istanza autonoma di SQL Server e Ridenominare un'istanza del cluster di failover di SQL Server.For information about renaming the server, see Rename a Computer that Hosts a Stand-Alone Instance of SQL Server and Rename a SQL Server Failover Cluster Instance.

    È possibile che venga visualizzato un messaggio di errore dell'agente di lettura log che informa l'utente che il database di pubblicazione e il database di distribuzione non sono sincronizzati.You might receive an error message from the Log Reader Agent that the publication database and the distribution database are not synchronized.

  11. Nel server secondario ripristinare la chiave master del servizio di cui è stato eseguito il backup dal server primario.At the secondary server, restore the service master key that was backed up from the primary. Per altre informazioni, vedere RESTORE SERVICE MASTER KEY (Transact-SQL).For more information, see RESTORE SERVICE MASTER KEY (Transact-SQL).

  12. Eseguire sp_replrestart.Execute sp_replrestart. Questa stored procedure consente di forzare l'agente di lettura log in modo che le transazioni già replicate nel log del database di pubblicazione vengano ignorate.This stored procedure can be used to force the Log Reader Agent to ignore all the previous replicated transactions in the publication database log. Le transazioni applicate dopo il completamento della stored procedure vengono elaborate dall'agente di lettura log.Transactions applied after the completion of the stored procedure are processed by the Log Reader Agent. Per altre informazioni, vedere sp_replrestart (Transact-SQL).For more information, see sp_replrestart (Transact-SQL).

  13. Dopo aver eseguito la stored procedure, riavviare l'agente di lettura log.Restart the Log Reader Agent after the stored procedure executes successfully. Per altre informazioni, vedere Avviare e arrestare un agente di replica (SQL Server Management Studio).For more information, see Start and Stop a Replication Agent (SQL Server Management Studio).

  14. Le transazioni che sono già state distribuite al Sottoscrittore possono essere applicate al server di pubblicazione.Transactions that have already been distributed to Subscriber might be applied at the Publisher. Affinché non si verifichi un errore dell'agente di distribuzione durante il tentativo di riapplicazione di tali transazioni al Sottoscrittore, specificare il profilo agente Continua in caso di errori di coerenza dei dati.To ensure that the Distribution Agent does not fail with an error when attempting to reapply these transactions at a Subscriber, specify the agent profile titled Continue On Data Consistency Errors.

Log shipping con replica di tipo mergeLog Shipping with Merge Replication

Eseguire la procedura seguente per configurare la replica di tipo merge e il log shipping.Follow the steps in the procedure below to configure merge replication and log shipping.

Per configurare la replica di tipo merge e il log shippingTo configure merge replication and log shipping

  1. Configurare il log shipping per il database di pubblicazione.Configure log shipping for the publication database. Per altre informazioni, vedere Configurare il log shipping (SQL Server).For more information, see Configure Log Shipping (SQL Server).

  2. In caso di errore del server di pubblicazione, nel server secondario rinominare il computer e quindi l'istanza di SQL ServerSQL Server in modo che i nuovi nomi corrispondano al nome del server primario.If the Publisher fails, at the secondary server, rename the computer and then rename the SQL ServerSQL Server instance to match the primary server name. Per informazioni sulla ridenominazione di un computer, vedere la documentazione di Windows.For information about renaming the computer, see the Windows documentation. Per informazioni sulla ridenominazione del server, vedere Rinominare un computer che ospita un'istanza autonoma di SQL Server e Ridenominare un'istanza del cluster di failover di SQL Server.For information about renaming the server, see Rename a Computer that Hosts a Stand-Alone Instance of SQL Server and Rename a SQL Server Failover Cluster Instance.

  3. Ripristinare l'ultimo log del database nel server secondario mediante l'opzione KEEP_REPLICATION di RESTORE LOG.Restore the last log of the database to the secondary server, using the KEEP_REPLICATION option of RESTORE LOG. In questo modo vengono mantenute tutte le impostazioni di replica per il database.This retains all replication settings for the database. Per altre informazioni, vedere Failover su un database secondario per il log shipping (SQL Server) e RESTORE (Transact-SQL).For more information, see Fail Over to a Log Shipping Secondary (SQL Server) and RESTORE (Transact-SQL).

  4. Ripristinare i database msdb e master dal server primario al server secondario.Restore the msdb database and master databases from the primary to the secondary. Per altre informazioni, vedere Backup e ripristino di Database di sistema (SQL Server).For more information, see Back Up and Restore of System Databases (SQL Server). Se il server primario è anche un server di distribuzione, ripristinare il database di distribuzione dal server primario a quello secondario.If the primary was also a Distributor, restore the distribution database from the primary to the secondary.

    Le impostazioni e la configurazione di replica di questi database devono essere consistenti con quelle del database di pubblicazione nel server primario.These databases must be consistent with the publication database at the primary in terms of replication configuration and settings.

  5. Nel server secondario ripristinare la chiave master del servizio di cui è stato eseguito il backup dal server primario.At the secondary server, restore the service master key that was backed up from the primary. Per altre informazioni, vedere RESTORE SERVICE MASTER KEY (Transact-SQL).For more information, see RESTORE SERVICE MASTER KEY (Transact-SQL).

  6. Sincronizzare il database di pubblicazione con uno o più database di sottoscrizione.Synchronize the publication database with one or more subscription databases. In questo modo è possibile caricare le modifiche già apportate nel database di pubblicazione, ma non ancora incluse nella copia di backup ripristinata.This allows you to upload those changes made previously in the publication database, but not represented in the restored backup. I dati che è possibile caricare dipendono dal modo in cui una pubblicazione è filtrata:The data that can be uploaded depends on the way in which a publication is filtered:

    • Se la pubblicazione non è filtrata, sarà possibile aggiornare il database di pubblicazione eseguendo la sincronizzazione con il Sottoscrittore più aggiornato.If the publication is not filtered, you should be able to bring the publication database up-to-date by synchronizing with the most up-to-date Subscriber.

    • Se la pubblicazione è filtrata, l'aggiornamento del database di pubblicazione potrebbe non essere possibile.If the publication is filtered, you might not be able to bring the publication database up-to-date. Considerare una tabella partizionata in modo che ogni sottoscrizione riceva i dati relativi ai clienti solo per una singola area: Nord, Est, Sud e Ovest.Consider a table that is partitioned such that each subscription receives customer data only for a single region: North, East, South, and West. Se per ogni partizione di dati è disponibile almeno un Sottoscrittore, la sincronizzazione con un Sottoscrittore per ogni partizione dovrebbe consentire di aggiornare il database di pubblicazione.If there is at least one Subscriber for each partition of data, synchronizing with a Subscriber for each partition should bring the publication database up-to-date. Tuttavia, se ad esempio i dati nella partizione Ovest non sono stati replicati in alcun Sottoscrittore, questi dati nel server di pubblicazione non potranno essere aggiornati.However, if data in the West partition, for example, was not replicated to any Subscribers, this data at the Publisher cannot be brought up-to-date. In questo caso è consigliabile reinizializzare tutte le sottoscrizioni in modo da garantire la convergenza dei dati nel server di pubblicazione e nei Sottoscrittori.In this case, we recommend reinitializing all subscriptions so that the data at the Publisher and Subscribers converges. Per altre informazioni, vedere Reinizializzare le sottoscrizioni.For more information, see Reinitialize Subscriptions.

      Se si esegue la sincronizzazione con un Sottoscrittore che esegue una versione di SQL ServerSQL Server precedente a SQL Server 2005SQL Server 2005, la sottoscrizione non può essere anonima, ma deve essere una sottoscrizione client o una sottoscrizione server (chiamate sottoscrizioni locali e sottoscrizioni globali nelle versioni precedenti del prodotto).If you synchronize with a Subscriber that is running a version of SQL ServerSQL Server prior to SQL Server 2005SQL Server 2005, the subscription cannot be anonymous; it must be a client subscription or server subscription (referred to as local subscriptions and global subscriptions in previous releases). Per altre informazioni, vedere Sincronizzare i dati.For more information, see Synchronize Data.

Vedere ancheSee Also

Caratteristiche e attività di replica Replication Features and Tasks
Informazioni sul log shipping (SQL Server) About Log Shipping (SQL Server)
Mirroring e replica del database (SQL Server)Database Mirroring and Replication (SQL Server)