Configurare la replica per i gruppi di disponibilità AlwaysOn (SQL Server)Configure Replication for Always On Availability Groups (SQL Server)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2016)noDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

La configurazione della replica in SQL ServerSQL Server e dei gruppi di disponibilità AlwaysOn richiede sette passaggi.Configuring SQL ServerSQL Server replication and Always On availability groups involves seven steps. Ogni passaggio è descritto in dettaglio nelle sezioni seguenti.Each step is described in more detail in the following sections.

  1. Configurare le pubblicazioni e le sottoscrizioni del database.Configure the database publications and subscriptions.

  2. Configurare il gruppo di disponibilità AlwaysOn.Configure the Always On availability group.

  3. Assicurare che tutti gli host della replica secondaria vengano configurati per la replica.Insure that all secondary replica hosts are configured for replication.

  4. Configurare gli host della replica secondaria come server di pubblicazione di replica.Configure the secondary replica hosts as replication publishers.

  5. Reindirizzare il server di pubblicazione originale al nome del listener gruppo di disponibilità.Redirect the original publisher to the Availability Group Listener Name.

  6. Eseguire la stored procedure di convalida per verificare la configurazione.Run the validation stored procedure to verify the configuration.

  7. Aggiungere il server di pubblicazione originale a Monitoraggio replica.Add the original publisher to Replication Monitor.

    I passaggi 1 e 2 possono essere effettuati in qualsiasi ordine.Steps 1 and 2 can be performed in either order.

1. Configurare le pubblicazioni e le sottoscrizioni del database 1. Configure the Database Publications and Subscriptions

Configurare il server di distribuzioneConfigure the distributor

Il database di distribuzione non può trovarsi in un gruppo di disponibilità.The distribution database cannot be placed in an availability group.

  1. Configurare la distribuzione sul server di distribuzione.Configure distribution at the distributor. Se per la configurazione vengono usate stored procedure, eseguire sp_adddistributor.If stored procedures are being used for configuration, run sp_adddistributor. Utilizzare il parametro @password per identificare la password che sarà utilizzata quando un server di pubblicazione remoto si connette al server di distribuzione.Use the @password parameter to identify the password that will be used when a remote publisher connects to the distributor. La password sarà necessaria anche per ogni server di pubblicazione remoto quando viene configurato il server di distribuzione remoto.The password will also be needed at each remote publisher when the remote distributor is set up.

    USE master;  
    GO  
    EXEC sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = '**Strong password for distributor**';  
    
  2. Creare il database di distribuzione nel server di distribuzione.Create the distribution database at the distributor. Se per la configurazione vengono usate stored procedure, eseguire sp_adddistributiondb.If stored procedures are being used for configuration, run sp_adddistributiondb.

    USE master;  
    GO  
    EXEC sys.sp_adddistributiondb  
        @database = 'distribution',  
        @security_mode = 1;  
    
  3. Configurare il server di pubblicazione remoto.Configure the remote publisher. Se per la configurazione del server di distribuzione vengono usate stored procedure, eseguire sp_adddistpublisher.If stored procedures are being used to configure the distributor, run sp_adddistpublisher. Il parametro @security_mode viene usato per determinare in che modo la stored procedure di convalida del server di pubblicazione eseguita dagli agenti di replica si connette alla replica primaria corrente.The @security_mode parameter is used to determine how the publisher validation stored procedure that is run from the replication agents, connects to the current primary. Se impostato su 1, per connettersi alla replica primaria corrente viene utilizzata l'Autenticazione di Windows.If set to 1 Windows authentication is used to connect to the current primary. Se impostato su 0, viene usata l'autenticazione SQL ServerSQL Server con i valori @login e @password specificati.If set to 0, SQL ServerSQL Server authentication is used with the specified @login and @password values. L'account di accesso e la password specificati devono essere validi per ogni replica secondaria per consentire alla stored procedure di convalida di connettersi a tale replica.The login and password specified must be valid at each secondary replica for the validation stored procedure to successfully connect to that replica.

    Nota

    Se gli eventuali agenti di replica modificati vengono eseguiti in un computer diverso dal server di distribuzione, l'utilizzo dell'Autenticazione di Windows per la connessione alla replica primaria richiederà l'autenticazione Kerberos per consentire la configurazione per la comunicazione tra i computer host della replica.If any modified replication agents run on a computer other than the distributor, use of Windows authentication for the connection to the primary will require Kerberos authentication to be configured for the communication between the replica host computers. L'utilizzo di un account di accesso di SQL ServerSQL Server per la connessione alla replica primaria corrente non richiede l'autenticazione Kerberos.Use of a SQL ServerSQL Server login for the connection to the current primary will not require Kerberos authentication.

    USE master;  
    GO  
    EXEC sys.sp_adddistpublisher  
        @publisher = 'AGPrimaryReplicaHost',  
        @distribution_db = 'distribution',  
        @working_directory = '\\MyReplShare\WorkingDir',  
        @login = 'MyPubLogin',  
        @password = '**Strong password for publisher**';  
    

    Per altre informazioni, vedere sp_adddistpublisher (Transact-SQL).For more information, see sp_adddistpublisher (Transact-SQL).

    Configurare il server di pubblicazione nel server di pubblicazione originaleConfigure the publisher at the original publisher

  4. Configurare la distribuzione remota.Configure remote distribution. Se per la configurazione del server di pubblicazione vengono usate stored procedure, eseguire sp_adddistributor.If stored procedures are being used to configure the publisher, run sp_adddistributor. Specificare per @password lo stesso valore usato al momento dell'esecuzione di sp_adddistrbutor nel server di distribuzione per configurare la distribuzione.Specify the same value for @password as that used when sp_adddistrbutor was run at the distributor to set up distribution.

    exec sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = 'MyDistPass'  
    
  5. Abilitare il database per la replica.Enable the database for replication. Se per la configurazione del server di pubblicazione vengono usate stored procedure, eseguire sp_replicationdboption.If stored procedures are being used to configure the publisher, run sp_replicationdboption. Se è necessario configurare la replica transazionale e di tipo merge per il database, è necessario abilitarne ognuna.If both transactional and merge replication are to be configured for the database, each must be enabled.

    USE master;  
    GO  
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'true';  
    
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'merge publish',  
        @value = 'true';  
    
  6. Creare la pubblicazione di replica, articoli e sottoscrizioni.Create the replication publication, articles, and subscriptions. Per ulteriori informazioni sulla configurazione della replica, vedere Pubblicazione di dati e oggetti di database.For more information about how to configure replication, see Publishing Data and Database objects.

2. Configurare il gruppo di disponibilità AlwaysOn 2. Configure the Always On Availability Group

Nella replica primaria prevista creare il gruppo di disponibilità con il database pubblicato (o da pubblicare) come database membro.At the intended primary, create the availability group with the published (or to be published) database as a member database. In caso di utilizzo della Creazione guidata Gruppo di disponibilità, è possibile consentire alla procedura guidata di sincronizzare inizialmente i database di tipo replica secondaria o eseguire manualmente l'inizializzazione mediante backup e ripristino.If using the Availability Group Wizard, you can either allow the wizard to initially synchronize the secondary replica databases or you can perform the initialization manually by using backup and restore.

Creare un listener DNS per il gruppo di disponibilità che sarà utilizzato dagli agenti di replica per connettersi alla replica primaria corrente.Create a DNS listener for the availability group that will be used by the replication agents to connect to the current primary. Il nome del listener specificato sarà utilizzato come destinazione di reindirizzamento per la coppia server di pubblicazione originale/database pubblicato.The listener name that is specified will be used as the target of redirection for the original publisher/published database pair. Ad esempio, se si utilizza DDL per configurare il gruppo di disponibilità, è possibile utilizzare l'esempio di codice seguente per specificare un listener per un gruppo di disponibilità esistente denominato MyAG:For example, if you are using DDL to configure the availability group, the following code example can be used to specify an availability group listener for an existing availability group named MyAG:

ALTER AVAILABILITY GROUP 'MyAG'   
    ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));  

Per altre informazioni, vedere Creazione e configurazione di gruppi di disponibilità (SQL Server).For more information, see Creation and Configuration of Availability Groups (SQL Server).

3. Assicurare che tutti gli host della replica secondaria siano configurati per la replica 3. Insure that all of the Secondary Replica Hosts are Configured for Replication

In ogni host della replica secondaria verificare che SQL ServerSQL Server sia stato configurato per supportare la replica.At each secondary replica host, verify that SQL ServerSQL Server has been configured to support replication. È possibile eseguire la query seguente in ogni host della replica secondaria per determinare se la replica è installata:The following query can be run at each secondary replica host to determine whether replication is installed:

USE master;  
GO  
DECLARE @installed int;  
EXEC @installed = sys.sp_MS_replication_installed;  
SELECT @installed;  

Se il parametro @installed è 0, è necessario aggiungere la replica all'installazione di SQL ServerSQL Server .If @installed is 0, replication must be added to the SQL ServerSQL Server installation.

4. Configurare gli host della replica secondaria come server di pubblicazione di replica 4. Configure the Secondary Replica Hosts as Replication Publishers

Una replica secondaria non può essere utilizzata come server di pubblicazione o di ripubblicazione della replica, ma è necessario configurare la replica in modo che dopo un failover possa essere utilizzata la replica secondaria.A secondary replica cannot act as a replication publisher or republisher but replication must be configured so that the secondary can take over after a failover. Nel server di distribuzione configurare la distribuzione per ogni host della replica secondaria.At the distributor, configure distribution for each secondary replica host. Specificare lo stesso database di distribuzione e la stessa directory di lavoro specificati quando il server di pubblicazione originale è aggiunto al server di distribuzione.Specify the same distribution database and working directory as was specified when the original publisher was added to the distributor. Se per la configurazione della distribuzione vengono usate stored procedure, eseguire sp_adddistpublisher per associare i server di pubblicazione remoti al server di distribuzione.If you are using stored procedures to configure distribution, use sp_adddistpublisher to associate the remote publishers with the distributor. Se il parametro @login e @password sono stati utilizzati per il server di pubblicazione originale, specificare gli stessi valori per ognuno quando si aggiungono host della replica secondaria come server di pubblicazione.If @login and @password were used for the original publisher, specify the same values for each when you add the secondary replica hosts as publishers.

EXEC sys.sp_adddistpublisher  
    @publisher = 'AGSecondaryReplicaHost',  
    @distribution_db = 'distribution',  
    @working_directory = '\\MyReplShare\WorkingDir',  
    @login = 'MyPubLogin',  
    @password = '**Strong password for publisher**';  

Configurare la distribuzione per ogni host della replica secondaria.At each secondary replica host, configure distribution. Identificare il server di distribuzione del server di pubblicazione originale come server di distribuzione remoto.Identify the distributor of the original publisher as the remote distributor. Usare la password specificata quando sp_adddistributor è stato eseguito inizialmente nel server di distribuzione.Use the same password as that used when sp_adddistributor was run originally at the distributor. Se per la configurazione della distribuzione vengono usate stored procedure, il parametro @password per sp_adddistributor viene usato per specificare la password.If stored procedures are being used to configure distribution, the @password parameter of sp_adddistributor is used to specify the password.

EXEC sp_adddistributor   
    @distributor = 'MyDistributor',  
    @password = '**Strong password for distributor**';  

In ogni host della replica secondaria verificare che i Sottoscrittori push delle pubblicazioni del database vengano visualizzati come server collegati.At each secondary replica host, make sure that the push subscribers of the database publications appear as linked servers. Se per la configurazione dei server di pubblicazione remoti vengono usate stored procedure, eseguire sp_addlinkedserver per aggiungere i Sottoscrittori, se non già presenti, come server collegati ai server di pubblicazione.If stored procedures are being used to configure the remote publishers, use sp_addlinkedserver to add the subscribers (if not already present) as linked servers to the publishers.

EXEC sys.sp_addlinkedserver   
    @server = 'MySubscriber';  

5. Reindirizzare il server di pubblicazione originale al nome del listener gruppo di disponibilità 5. Redirect the Original Publisher to the AG Listener Name

Nel database di distribuzione del server di distribuzione eseguire la stored procedure sp_redirect_publisher per associare il server di pubblicazione originale e il database pubblicato al nome del listener del gruppo di disponibilità.At the distributor, in the distribution database, run the stored procedure sp_redirect_publisher to associate the original publisher and the published database with the availability group listener name of the availability group.

USE distribution;  
GO  
EXEC sys.sp_redirect_publisher   
@original_publisher = 'MyPublisher',  
    @publisher_db = 'MyPublishedDB',  
    @redirected_publisher = 'MyAGListenerName';  

6. Eseguire la stored procedure di convalida della replica per verificare la configurazione 6. Run the Replication Validation Stored Procedure to Verify the Configuration

Nel database di distribuzione del server di distribuzione eseguire la stored procedure sp_validate_replica_hosts_as_publishers per verificare che tutti gli host della replica siano configurati come server di pubblicazione per il database pubblicato.At the distributor, in the distribution database, run the stored procedure sp_validate_replica_hosts_as_publishers to verify that all replica hosts are now configured to serve as publishers for the published database.

USE distribution;  
GO  
DECLARE @redirected_publisher sysname;  
EXEC sys.sp_validate_replica_hosts_as_publishers  
    @original_publisher = 'MyPublisher',  
    @publisher_db = 'MyPublishedDB',  
    @redirected_publisher = @redirected_publisher output;  

La stored procedure sp_validate_replica_hosts_as_publishers deve essere eseguita da un account di accesso con autorizzazioni sufficienti in ogni host della replica del gruppo di disponibilità per richiedere informazioni sul gruppo di disponibilità.The stored procedure sp_validate_replica_hosts_as_publishers should be run from a login with sufficient authorization at each availability group replica host to query for information about the availability group. A differenza di sp_validate_redirected_publisher, usa le credenziali del chiamante e non l'account di accesso incluso in msdb.dbo.MSdistpublishers per connettersi alle repliche del gruppo di disponibilità.Unlike sp_validate_redirected_publisher, it uses the credentials of the caller and does not use the login retained in msdb.dbo.MSdistpublishers to connect to the availability group replicas.

Nota

sp_validate_replica_hosts_as_publishers avrà esito negativo e verrà visualizzato il messaggio di errore seguente durante la convalida degli host della replica secondaria che non consentono l'accesso in lettura o richiedono che venga specificata la finalità di lettura.sp_validate_replica_hosts_as_publishers will fail with the following error when validating secondary replica hosts that do not allow read access, or require read intent to be specified.

Msg 21899, Livello 11, Stato 1, Procedura sp_hadr_verify_subscribers_at_publisher, Riga 109Msg 21899, Level 11, State 1, Procedure sp_hadr_verify_subscribers_at_publisher, Line 109

La query sul server di pubblicazione reindirizzato 'MyReplicaHostName' per determinare la presenza di voci sysserver per i sottoscrittori del server di pubblicazione originale 'MyOriginalPublisher' non è riuscita restituendo l'errore '976', messaggio di errore 'Errore 976, Livello 14, Stato 1, Messaggio: Il database di destinazione, 'MyPublishedDB', partecipa a un gruppo di disponibilità e non è attualmente accessibile per le query.The query at the redirected publisher 'MyReplicaHostName' to determine whether there were sysserver entries for the subscribers of the original publisher 'MyOriginalPublisher' failed with error '976', error message 'Error 976, Level 14, State 1, Message: The target database, 'MyPublishedDB', is participating in an availability group and is currently not accessible for queries. Lo spostamento dei dati è sospeso o la replica di disponibilità non è abilitata per l'accesso in lettura.Either data movement is suspended or the availability replica is not enabled for read access. Per consentire l'accesso in sola lettura a questo e ad altri database nel gruppo di disponibilità, abilitare l'accesso in lettura a una o più repliche di disponibilità secondarie nel gruppo.To allow read-only access to this and other databases in the availability group, enable read access to one or more secondary availability replicas in the group. Per altre informazioni, vedere l'istruzione ALTER AVAILABILITY GROUP nella documentazione online di SQL ServerSQL Server .For more information, see the ALTER AVAILABILITY GROUP statement in SQL ServerSQL Server Books Online.'.

Sono stati rilevati uno o più errori di convalida del server di pubblicazione per l'host della replica 'MyReplicaHostName'.One or more publisher validation errors were encountered for replica host 'MyReplicaHostName'.

Tale comportamento è previsto.This is expected behavior. È necessario verificare la presenza delle voci del Sottoscrittore in questi host della replica secondaria eseguendo una query per le voci sysserver direttamente sull'host.You must verify the presence of the subscriber server entries at these secondary replica hosts by querying for the sysserver entries directly at the host.

7. Aggiungere il server di pubblicazione originale a Monitoraggio replica 7. Add the Original Publisher to Replication Monitor

In ogni replica del gruppo di disponibilità aggiungere il server di pubblicazione originale a Monitoraggio replica.At each availability group replica, add the original publisher to Replication Monitor.

ReplicaReplication

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