Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:SQL Server su Windows
La configurazione della replica di SQL Server e dei gruppi di disponibilità Always On richiede sette passaggi. Ogni passaggio è descritto in dettaglio nelle sezioni seguenti.
1. Configurare le pubblicazioni e le sottoscrizioni del database
Configurare il server di distribuzione
Il database di distribuzione non può essere inserito in un gruppo di disponibilità con SQL Server 2012 e SQL Server 2014. L'inserimento del database di distribuzione in un gruppo di disponibilità è supportato con SQL 2016 e versioni successive, ad eccezione dei database di distribuzione usati nelle topologie di replica di tipo merge, bidirezionale o peer-to-peer. Per altre informazioni, vedere Configurare il database di distribuzione della replica nel gruppo di disponibilità AlwaysOn.
Configurare la distribuzione sul server di distribuzione. Se per la configurazione vengono usate stored procedure, eseguire
sp_adddistributorUsare il parametro @password per identificare la password che verrà usata quando un server di pubblicazione remoto si connette al server di distribuzione. La password sarà necessaria anche per ogni server di pubblicazione remoto quando viene configurato il server di distribuzione remoto.USE master; GO EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = '**Strong password for distributor**';Creare il database di distribuzione nel server di distribuzione. Se si utilizzano procedure memorizzate per la configurazione, eseguire il comando
sp_adddistributiondbUSE master; GO EXECUTE sys.sp_adddistributiondb @database = 'distribution', @security_mode = 1;Configurare il server di pubblicazione remoto. Se vengono usate stored procedure per configurare il server di distribuzione, eseguire
sp_adddistpublisherIl parametro @security_mode viene utilizzato per determinare il modo in cui la stored procedure di convalida del server di pubblicazione eseguita dagli agenti di replica si connette all'istanza primaria corrente. Se impostato su 1, per connettersi alla replica primaria corrente viene utilizzata l'Autenticazione di Windows. Se impostato su 0, SQL Server usa l'autenticazione con i valori @login e @password specificati. 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.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. L'uso di un account di accesso di SQL Server per la connessione alla replica primaria corrente non richiede l'autenticazione Kerberos.
USE master; GO EXECUTE 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.
Configurare il server di pubblicazione nel server di pubblicazione originale
Configurare la distribuzione remota. Se le stored procedure sono utilizzate per configurare il server di pubblicazione, esegui
sp_adddistributorSpecifica lo stesso valore per @password usato quandosp_adddistrbutorè stata eseguita sul server di distribuzione per impostare la distribuzione.EXECUTE sys.sp_adddistributor @distributor = 'MyDistributor', @password = 'MyDistPass';Abilitare il database per la replica. Se le stored procedure vengono usate per configurare il server di pubblicazione, eseguire
sp_replicationdboptionSe la replica transazionale e di tipo merge deve essere configurata per il database, ognuna di esse deve essere abilitata.USE master; GO EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'publish', @value = 'true'; EXECUTE sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'merge publish', @value = 'true';Creare la pubblicazione di replica, articoli e sottoscrizioni. Per ulteriori informazioni sulla configurazione della replica, vedere Pubblicazione di dati e oggetti di database.
2. Configurare il gruppo di disponibilità
Nella replica primaria prevista creare il gruppo di disponibilità con il database pubblicato (o da pubblicare) come database membro. 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.
Creare un listener DNS per il gruppo di disponibilità che sarà utilizzato dagli agenti di replica per connettersi alla replica primaria corrente. Il nome del listener specificato sarà utilizzato come destinazione di reindirizzamento per la coppia server di pubblicazione originale/database pubblicato. Ad esempio, se si usa DDL per configurare il gruppo di disponibilità, è possibile usare l'esempio di codice seguente per specificare un listener del gruppo di disponibilità per un gruppo di disponibilità esistente denominato 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).
3. Verificare che tutti gli host di replica secondaria siano configurati per la replica
In ogni host della replica secondaria verificare che SQL Server sia stato configurato per supportare la replica. È possibile eseguire la query seguente in ogni host della replica secondaria per determinare se la replica è installata:
USE master;
GO
DECLARE @installed AS INT;
EXECUTE @installed = sys.sp_MS_replication_installed;
SELECT @installed;
Se il parametro @installed è 0, è necessario aggiungere la replica all'installazione di SQL Server.
4. Configurare gli host di replica secondaria come server di pubblicazione di replica
Una replica secondaria non può fungere da server di pubblicazione di replica o ripubblicazione, ma la replica deve essere configurata in modo che la replica secondaria possa assumere il controllo dopo un failover. Nel server di distribuzione configurare la distribuzione per ogni host della replica secondaria. Specificare lo stesso database di distribuzione e la stessa directory di lavoro specificati quando il server di pubblicazione originale è aggiunto al server di distribuzione. Se si usano stored procedure per configurare la distribuzione, usare sp_adddistpublisher per associare i server di pubblicazione remoti al server di distribuzione. Se @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.
EXECUTE 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. Identificare il server di distribuzione del server di pubblicazione originale come server di distribuzione remoto. Usare la stessa password usata quando sp_adddistributor è stata eseguita originariamente nel server di distribuzione. Se vengono usate stored procedure per configurare la distribuzione, il parametro @password di sp_adddistributor viene usato per specificare la password.
EXECUTE 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. Se le stored procedure vengono usate per configurare i server di pubblicazione remoti, usare sp_addlinkedserver per aggiungere i sottoscrittori (se non già presenti) come server collegati ai server di pubblicazione.
EXECUTE sys.sp_addlinkedserver @server = 'MySubscriber';
5. Reindirizzare il publisher originale al nome del listener del AG
Nel database di distribuzione al server di distribuzione, eseguire la stored procedure sp_redirect_publisher per associare l'editore originale e il database pubblicato al nome del listener del gruppo di disponibilità.
USE distribution;
GO
EXECUTE 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
Nel database di distribuzione del server distributore, eseguite la stored procedure sp_validate_replica_hosts_as_publishers per verificare che tutti gli host replica siano ora configurati per servire come server di pubblicazione per il database pubblicato.
USE distribution;
GO
DECLARE @redirected_publisher AS sysname;
EXECUTE 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 autorizzazione sufficiente in ogni host di replica del gruppo di disponibilità per eseguire query per ottenere informazioni sul gruppo di disponibilità. A differenza di sp_validate_redirected_publisher, usa le credenziali del chiamante e non usa il login memorizzato in msdb.dbo.MSdistpublishers per connettersi alle repliche del gruppo di disponibilità.
Errore durante la convalida degli host di replica secondaria
sp_validate_replica_hosts_as_publishers fallisce con il seguente errore quando si convalidano gli host delle repliche secondarie che non consentono l'accesso in lettura o richiedono che venga specificata l'intenzione di lettura.
Messaggio 21899, livello 11, stato 1, procedura
sp_hadr_verify_subscribers_at_publisher, riga 109La 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. Lo spostamento dei dati è sospeso oppure la replica di disponibilità non è abilitata per l'accesso in lettura. 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. Per altre informazioni, vedere l'istruzione ALTER AVAILABILITY GROUP nella documentazione online di SQL Server.
Sono stati rilevati uno o più errori di convalida del server di pubblicazione per l'host della replica 'MyReplicaHostName'.
Si tratta di un comportamento previsto. È necessario verificare la presenza delle voci del Sottoscrittore in questi host della replica secondaria eseguendo una query per le voci sysserver direttamente sull'host.
7. Aggiungere il server di pubblicazione originale a Monitoraggio replica
In ogni replica del gruppo di disponibilità aggiungere il server di pubblicazione originale a Monitoraggio replica.
Attività correlate
Duplicazione
Gestione di un database di pubblicazione AlwaysOn (SQL Server)
Replica, Rilevamento modifiche, Change Data Capture e Gruppi di disponibilità Always On (SQL Server)
Creare e configurare un gruppo di disponibilità
- Usare la Creazione guidata Gruppo di disponibilità (SQL Server Management Studio)
- Usare la finestra di dialogo Nuovo gruppo di disponibilità (SQL Server Management Studio)
- Creare un gruppo di disponibilità (Transact-SQL)
- Creare un gruppo di disponibilità (SQL Server PowerShell)
- Specifica dell'URL dell'endpoint quando si aggiunge o si modifica una replica di disponibilità (SQL Server)
- Creare un endpoint del mirroring del database per i gruppi di disponibilità Always On (SQL Server PowerShell)
- Creare un join di una replica secondaria in un gruppo di disponibilità (SQL Server)
- Preparare manualmente un database secondario per un gruppo di disponibilità (SQL Server)
- Creare un join di un database secondario in un gruppo di disponibilità (SQL Server)
- Creare o configurare un listener del gruppo di disponibilità (SQL Server)