Condividi tramite


Sottoscrittori della replica e gruppi di disponibilità AlwaysOn (SQL Server)

Quando viene eseguito il failover di un gruppo di disponibilità AlwaysOn contenente un database che opera come sottoscrittore di replica, la sottoscrizione di replica potrebbe non venire completata. Per i sottoscrittori transazionali, l'agente di distribuzione continuerà a replicare automaticamente se la sottoscrizione utilizza il nome del listener del gruppo di disponibilità del sottoscrittore. Per i sottoscrittori di merge, un amministratore di replica deve riconfigurare manualmente il sottoscrittore ricreando la sottoscrizione.

Operazioni supportate

La replica di SQL Server supporta il failover automatico del server di pubblicazione, il failover automatico dei sottoscrittori transazionali e il failover manuale dei sottoscrittore di merge. Il failover di un server di distribuzione in un database di disponibilità non è supportato. AlwaysOn non può essere combinato con gli scenari di Websync e ssNoVersion Compact.

Failover di una sottoscrizione pull di merge

Durante il failover del gruppo di disponibilità si verifica un errore nella sottoscrizione pull poiché l'agente pull non riesce a trovare i processi archiviati nel database msdb dell'istanza del server in cui è ospitata la replica primaria, che non è disponibile a causa dell'errore che si è verificato nell'istanza del server.

Failover di una sottoscrizione push di merge

Durante il failover del gruppo di disponibilità si verifica un errore nella sottoscrizione push poiché l'agente push non può più connettersi al database di sottoscrizione originale nel sottoscrittore originale.

Come creare una sottoscrizione transazionale in un ambiente AlwaysOn

Per la replica transazionale usare i passaggi seguenti per configurare un gruppo di disponibilità del sottoscrittore e impostarne il failover:

  1. Prima di creare la sottoscrizione, aggiungere il database sottoscrittore al gruppo di disponibilità AlwaysOn appropriato.

  2. Aggiungere il listener del gruppo di disponibilità del sottoscrittore come server collegato a tutti i nodi del gruppo di disponibilità. Questa operazione assicura che tutti i partner di failover potenziali siano in grado di riconoscere e connettersi al listener.

  3. Usare lo script riportato nella sezione Creazione di una sottoscrizione push di una replica transazionale sottostante per creare la sottoscrizione con il nome del listener del gruppo di disponibilità del sottoscrittore. Dopo un failover, il nome del listener rimane sempre valido, mentre il nome del server effettivo del sottoscrittore dipenderà dal nodo effettivo diventato il nuovo nodo primario.

    [!NOTA]

    La sottoscrizione deve essere creata usando uno script Transact-SQL e non può essere creata con Management Studio.

  4. Se si crea una sottoscrizione pull:

    1. Nel nodo primario del sottoscrittore in Management Studio aprire l'albero SQL Server Agent.

    2. Identificare il processo dell'agente di distribuzione pull e modificare il processo.

    3. Nel passaggio del processo Esecuzione dell'agente verificare i parametri -Publisher e -Distributor. Verificare che questi parametri contengano i nomi corretti del server diretto e dell'istanza del server di distribuzione e del database di pubblicazione.

    4. Modificare il parametro -Subscriber impostando il nome del listener del gruppo di disponibilità del sottoscrittore.

Quando si crea la sottoscrizione utilizzando questa procedura, non si dovranno eseguire azioni dopo un failover.

Creazione di una sottoscrizione push di una replica transazionale

-- commands to execute at the publisher, in the publisher database:
use [<publisher database name>]
EXEC sp_addsubscription @publication = N'<publication name>', 
       @subscriber = N'<availability group listener name>', 
       @destination_db = N'<subscriber database name>', 
       @subscription_type = N'Push', 
       @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0;
GO

EXEC sp_addpushsubscription_agent @publication = N'<publication name>', 
       @subscriber = N'<availability group listener name>', 
       @subscriber_db = N'<subscriber database name>', 
       @job_login = null, @job_password = null, @subscriber_security_mode = 1;
GO

Per riprendere gli agenti di merge dopo il failover del gruppo di disponibilità del sottoscrittore

Per eseguire il merge della replica, un relativo amministratore deve riconfigurare manualmente il sottoscrittore attenendosi alla procedura seguente:

  1. Per rimuovere la sottoscrizione precedente del sottoscrittore eseguire sp_subscription_cleanup. Effettuare questa operazione nella nuova replica primaria, che precedentemente era la secondaria.

  2. Ricreare la sottoscrizione creando una nuova sottoscrizione a partire da un nuovo snapshot.

[!NOTA]

Il processo corrente non è pratico per i sottoscrittori della replica di tipo merge. Tuttavia, lo scenario principale per la replica di tipo merge è composto da utenti disconnessi (desktop, portatili, dispositivi palmari) che non utilizzeranno i gruppi di disponibilità AlwaysOn sul sottoscrittore.