Gestione di un database di pubblicazione AlwaysOn (SQL Server)Maintaining an Always On Publication Database (SQL Server)

In questo argomento si applica a: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento verranno illustrate alcune considerazioni speciali per la gestione di un database di pubblicazione quando si usano gruppi di disponibilità AlwaysOn.This topic discusses special considerations for maintaining a publication database when you use Always On availability groups.

Contenuto dell'argomentoIn This Topic:

Gestione di un database di pubblicazione in un gruppo di disponibilitàMaintaining a Published Database in an Availability Group

La gestione di un database di pubblicazione AlwaysOn è sostanzialmente analoga a quella di un database di pubblicazione standard, con le considerazioni seguenti:Maintaining an Always On publication database is basically the same as maintaining a standard publication database, with the following considerations:

  • L'amministrazione deve avvenire nell'host della replica primaria.Administration must occur at the primary replica host. In SQL Server Management StudioSQL Server Management Studiole pubblicazioni vengono visualizzate nella cartella Pubblicazioni locali per l'host della replica primaria e per le repliche secondarie leggibili.In SQL Server Management StudioSQL Server Management Studio, publications appear under the Local Publications folder for the primary replica host and also for readable secondary replicas. Dopo il failover potrebbe essere necessario aggiornare manualmente Management StudioManagement Studio per riflettere la modifica se la replica secondaria promossa a primaria non era leggibile.After failover, you might have to manually refresh Management StudioManagement Studio for the change to be reflected if the secondary that was promoted to primary was not readable.

  • In Monitoraggio replica le informazioni sulla pubblicazione vengono sempre visualizzate nel server di pubblicazione originale.Replication Monitor always displays publication information under the original publisher. Queste informazioni possono tuttavia essere visualizzate in Monitoraggio replica da qualsiasi replica aggiungendo il server di pubblicazione originale come server.However, this information can be viewed in Replication Monitor from any replica by adding the original publisher as a server.

  • Se l'amministrazione viene effettuata nella replica primaria corrente mediante oggetti RMO (Replication Management Objects) o stored procedure, nei casi in cui si specifica il nome del server di pubblicazione è necessario specificare il nome dell'istanza in cui il database è stato abilitato per la replica, ovvero il server di pubblicazione originale.When using stored procedures or Replication Management Objects (RMO) to administer replication at the current primary, for cases in which you specify the Publisher name, you must specify the name of the instance on which the database was enabled for replication (the original publisher). Per determinare il nome appropriato, utilizzare la funzione PUBLISHINGSERVERNAME .To determine the appropriate name, use the PUBLISHINGSERVERNAME function. Quando un database di pubblicazione viene unito in join a un gruppo di disponibilità, i metadati di replica archiviati nelle repliche di database secondarie sono identici a quelli della replica primaria.When a publishing database joins an availability group, the replication metadata stored in the secondary database replicas is identical to that at the primary. Ne consegue che, per i database di pubblicazione abilitati per la replica nel database primario, il nome dell'istanza del server di pubblicazione archiviato in tabelle di sistema nel database secondario equivale al nome del database primario e non a quello del database secondario.Consequently, for publication databases enabled for replication at the primary, the publisher instance name stored in system tables at the secondary is the name of the primary, not the secondary. Ciò influisce sulla manutenzione e sulla configurazione della replica se viene eseguito il failover del database di pubblicazione su un database secondario.This affects replication configuration and maintenance if the publication database fails over to a secondary. Se ad esempio si configura la replica con stored procedure in un database secondario dopo il failover e si vuole usare una sottoscrizione pull a un database di pubblicazione abilitato in una replica diversa, è necessario specificare il nome del server di pubblicazione originale anziché di quello corrente come parametro @publisher di sp_addpullsubscription o sp_addmergepulllsubscription.For example, if you are configuring replication with stored procedures at a secondary after failover, and you want a pull subscription to a publication database that was enabled at a different replica, you must specify the name of the original publisher instead of the current publisher as the @publisher parameter of sp_addpullsubscription or sp_addmergepulllsubscription. Se tuttavia si abilita un database di pubblicazione dopo il failover, il nome dell'istanza del server di pubblicazione archiviato nelle tabelle di sistema corrisponde al nome dell'host primario corrente.However, if you enable a publication database after failover, the publisher instance name stored in the system tables is the name of the current primary host. In questo caso si utilizzerà il nome host della replica primaria corrente per il parametro @publisher .In this case, you would use the host name of the current primary replica for the @publisher parameter.

    Nota

    Per alcune procedure, ad esempio sp_addpublication, il parametro @publisher è supportato solo per server di pubblicazione che non sono istanze di SQL ServerSQL Server, quindi non è rilevante per SQL ServerSQL Server AlwaysOn.For some procedures, such as sp_addpublication, the @publisher parameter is supported only for publishers that are not instances of SQL ServerSQL Server; in these cases, it is not relevant for SQL ServerSQL Server Always On.

  • Per sincronizzare una sottoscrizione in Management StudioManagement Studio dopo un failover, sincronizzare le sottoscrizioni pull dal Sottoscrittore e le sottoscrizioni push dal server di pubblicazione attivo.To synchronize a subscription in Management StudioManagement Studio after a failover, synchronize pull subscriptions from the subscriber and synchronize push subscriptions from the active publisher.

Rimozione di un database di pubblicazione da un gruppo di disponibilitàRemoving a Published Database from an Availability Group

Considerare i problemi seguenti se un database pubblicato viene rimosso da un gruppo di disponibilità o se un gruppo di disponibilità che dispone di un database del membro pubblicato viene eliminato.Consider the following issues if a published database is removed from an availability group, or if an availability group that has a published member database is dropped.

  • Se il database di pubblicazione nel server di pubblicazione originale viene rimosso dalla replica primaria di un gruppo di disponibilità, è necessario eseguire sp_redirect_publisher senza specificare un valore per il parametro @redirected_publisher per rimuovere il reindirizzamento per la coppia server di pubblicazione/database.If the publication database at the original publisher is removed from an availability group primary replica, you must run sp_redirect_publisher without specifying a value for the @redirected_publisher parameter in order to remove the redirection for the publisher/database pair.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB';  
    

    Il database rimarrà nello stato di recupero nella replica primaria e dovrà essere ripristinato.The database will be left in the recovering state at the primary and must be restored. Una volta effettuata questa operazione, la replica dovrebbe funzionare invariata rispetto al server di pubblicazione originale.Once you do this, replication should work unchanged against the original Publisher.

  • In caso di failover del database di pubblicazione dal server di pubblicazione originale a una replica e se il database viene rimosso dalla replica primaria del gruppo di disponibilità, usare la stored procedure sp_redirect_publisher per reindirizzare in modo esplicito il server di pubblicazione originale al nuovo server di pubblicazione.If the publication database fails over from the original publisher to a replica and the database is removed from the availability group primary replica, use the stored procedure sp_redirect_publisher to explicitly redirect the original publisher to the new publisher. Il database rimarrà nello stato di recupero e dovrà essere ripristinato.The database will be left in the recovering state and must be restored. Una volta effettuata questa operazione, la replica dovrebbe continuare a funzionare come nel gruppo di disponibilità.Once you do this, replication should continue to work as it did under the availability group.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB',  
        @redirected_publisher = 'MyNewPublisher';  
    

    Non rimuovere il server remoto per il server di pubblicazione originale dal distributore, anche se non è più possibile accedere al server.Do not remove the remote server for the original publisher from the distributor, even if the server can no longer be accessed. I metadati del server per il server di pubblicazione originale sono necessari nel distributore per rispondere alle query sui metadati di pubblicazione.The server metadata for the original publisher is needed at the distributor to satisfy publication metadata queries.

  • Se viene rimosso un gruppo di disponibilità completo, il comportamento di un database replicato membro è lo stesso di un database pubblicato rimosso da un gruppo di disponibilità.If a complete availability group is removed, the behavior with regard to a member replicated database is the same as when a published database is removed from an availability group. È possibile riprendere la replica dall'ultima replica primaria non appena viene ripristinato il database e modificato il reindirizzamento.Replication can be resumed from the last primary as soon as the database has been restored and the redirection has been modified. Se il database viene ripristinato nel server di pubblicazione originale, il reindirizzamento deve essere rimosso.If the database is restored at its original publisher, redirection should be removed. Se il database viene ripristinato in un host diverso, il reindirizzamento deve essere effettuato in modo esplicito al nuovo host.If the database is restored at a different host, redirection should be explicitly directed to the new host.

    Nota

    Quando viene rimosso un gruppo di disponibilità contenente database membro pubblicati o viene rimosso un database pubblicato da un gruppo di disponibilità, tutte le copie dei database pubblicati rimarranno nello stato di recupero.When an availability group is removed that has published member databases, or a published database is removed from an availability group, all copies of the published databases will be left in the recovering state. Se ripristinati, saranno tutti visualizzati come database pubblicato.If restored, each will appear as a published database. Sarà necessario mantenere una sola copia con i metadati di pubblicazione.Only one copy should be retained with publication metadata. Per disabilitare la replica per una copia del database pubblicato, è necessario prima rimuovere tutte le sottoscrizioni e le pubblicazioni dal database.To disable replication for a published database copy, first remove all subscriptions and publications from the database.

    Eseguire sp_dropsubscription per rimuovere le sottoscrizioni della pubblicazione.Run sp_dropsubscription to remove publication subscriptions. Accertarsi di impostare il parametro @ignore_distributributor su 1 per mantenere i metadati per il database di pubblicazione attivo nel server di distribuzione.Make sure to set the parameter @ignore_distributributor to 1 to preserve the metadata for the active publishing database at the distributor.

    USE MyDBName;  
    GO  
    
    EXEC sys.sp_dropsubscription   
        @subscriber = 'MySubscriber',  
        @publication = 'MyPublication',  
        @article = 'all',  
        @ignore_distributor = 1;  
    

    Eseguire sp_droppublication per rimuovere tutte le pubblicazioni.Run sp_droppublication to remove all publications. Impostare di nuovo il parametro @ignore_distributor su 1 per mantenere i metadati per il database di pubblicazione attivo nel server di distribuzione.Again, set the parameter @ignore_distributor to 1 to preserve the metadata for the active publishing database at the distributor.

    EXEC sys.sp_droppublication   
        @publication = 'MyPublication',  
        @ignore_distributor = 1;  
    

    Eseguire sp_replicationdboption per disabilitare la replica per il database.Run sp_replicationdboption to disable replication for the database.

    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'false';  
    

    A questo punto la copia del database pubblicato può essere mantenuta o eliminata.At this point, the copy of the published database can be retained or dropped.

Attività correlateRelated Tasks

Vedere ancheSee Also

Prerequisiti, restrizioni e raccomandazioni per i gruppi di disponibilità AlwaysOn (SQL Server) Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)
Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Gruppi di disponibilità AlwaysOn: interoperabilità (SQL Server) Always On Availability Groups: Interoperability (SQL Server)
Replica di SQL ServerSQL Server Replication