La disponibilità dei gruppi AlwaysOn potrebbe essere segnalata come NON SINCRONIZZATA dopo l'applicazione di SQL Server 2014 CU5, SQL Server 2012 SP2 CU4 o SQL Server 2012 SP2 CU3.

Sintomi


Si consideri lo scenario seguente:

  • Si esegue Microsoft SQL Server 2014 o Microsoft SQL Server 2012 Service Pack 2 (SP2) su un server che ospita la replica secondaria di un gruppo di disponibilità come parte di un aggiornamento in sequenza.

  • Per l'installazione di SQL Server, è stato applicato uno dei seguenti aggiornamenti:

    • SQL Server 2014 aggiornamento cumulativo 5

    • SQL Server 2012 Service Pack 2 aggiornamento cumulativo 4

    • Aggiornamento cumulativo di SQL Server 2012 Service Pack 2 di 3

    Importante  L'hotfix menzionato in questo articolo sostituisce gli aggiornamenti cumulativi. Non installare questi aggiornamenti se non è stato già fatto.

  • Per completare l'installazione dell'aggiornamento cumulativo, si riavvia la replica secondaria.

  • Si esegue il failover del gruppo di disponibilità in fase di transizione con la replica secondaria al ruolo principale.

In questo scenario, è possibile riscontrare uno o più dei seguenti sintomi sul server che esegue SQL Server e che ora ospita la replica principale del gruppo di disponibilità:

  • Le repliche secondarie vengono segnalate come "Non sincronizzate".

  • Quando si esegue una query sys.dm_exec_requests, si noterà il blocco intermittente tra sessioni di utenti e una sessione di comando viene segnalato come in "DB_STARTUP". È possibile anche notare una situazione bloccante tra i comandi CHECKPOINT e DB_STARTUP .

  • Deadlock che coinvolgono la sessione che ha recuperato uno dei database di disponibilità vengono segnalati nel log degli errori di SQL Server. Questi registri sono simili ai seguenti:

    <date/time> spid<xx> Recovery is writing a checkpoint in database <dbname/dbid>. This isan informational message only. No user action is required.
    <date/time> spid<xx> Recovery completed for database <dbname/dbid> in <x> second(s) (analysis
    <x> ms, redo <x> ms, undo <x> ms.) This is an informational message only. No user action is required.

    <date/time> spid<xx> Error: 1205, Severity: 13, State: 28.
    <date/time> spid<xx> Transaction (Process ID <xx>) was deadlocked on lock resources with another
    process and has been chosen as the deadlock victim. Rerun the transaction.

  • Se il database di disponibilità è abilitato per Microsoft SQL Server Service Broker, i messaggi presenti nel database di disponibilità potrebbero non essere elaborati correttamente. Se si avvia lo strumento di analisi del Profiler e quindi si acquisisce l'evento "Broker:Message Classify", viene acquisito il seguente evento:

    9791, Service broker è disattivato nel database del mittente

Nota: Non si tratta di un problema sistematico. Potrebbe essere possibile applicare questi aggiornamenti cumulativi in una configurazione di AlwaysOn senza che si verifichi questo problema. Se si sono stati già applicati questi aggiornamenti cumulativi e non è stato notato questo problema, il sistema non ne è affetto e queste informazioni non sono applicabili.

Causa

Questo problema si verifica perché in alcuni casi si verifica una condizione di competizione tra i thread del sistema e le connessioni degli utenti. In questo modo la logica di gestione delle patch dell'aggiornamento cumulativo di ottenere i blocchi necessari per completare il processo di aggiornamento.

Risoluzione

Per risolvere questo problema, applicare il seguente hotfix critici su richiesta (COD) :

3034679 FIX: disponibilità AlwaysOn può essere segnalato come non sincronizzazione
Importante  È necessario applicare questo hotfix COD anziché gli aggiornamenti cumulativi seguenti:

  • SQL Server 2014 aggiornamento cumulativo 5

  • SQL Server 2012 Service Pack 2 aggiornamento cumulativo 4

  • Aggiornamento cumulativo di SQL Server 2012 Service Pack 2 di 3



Nota: Se sono stati già applicati questi aggiornamenti cumulativi, è necessario utilizzare la seguente soluzione per risolvere il problema.

Soluzione alternativa

Poiché questo problema è causato da un conflitto tra la sessione dell'utente e la sessione di aggiornamento per i database di disponibilità durante la transizione di database per il ruolo primario, è necessario eliminare il conflitto per attivare i database e risolvere il problema.

Per risolvere questo problema, attenersi alla seguente procedura:

  1. Utilizzare i metodi seguenti nell'ordine indicato.

    Metodo 1: Eliminare l'accesso al databaseQuando il database si verificano i sintomi descritti nella sezione "Sintomi", utilizzare una o entrambe le seguenti operazioni necessarie per eliminare la condizione di stallo:

    • Query sys.dm_exec_requests per individuare dove si verifica il blocco delle sessioni nei database di disponibilità. Utilizzare l'istruzione KILL per terminare le sessioni.

    • Disattivare o arrestare l'applicazione che accede al database di disponibilità.

    Se il metodo 1 non risolve il problema, passare al metodo 2.


    Metodo 2: Riavviare il server host di SQL ServerQuando l'accesso all'applicazione e all`utente sono ancora disabilitati, riavviare l'istanza di SQL Server che ospita i database di disponibilità affetti. A tale scopo, attenersi alla seguente procedura:

    1. Disattivare il failover automatico del gruppo di disponibilità.

    2. Riavviare l'istanza di SQL Server che ospita la replica primaria interessata.

    3. Attivare il failover automatico del gruppo di disponibilità.

  2. Dopo che i database interessati sono stati ripristinati al completo, ristabilire la connettività dell'applicazione e utente.

Stato

Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".

Riferimenti

Per ulteriori informazioni sugli aggiornamenti cumulativi che sono interessati da questo problema, vedere i seguenti articoli della Microsoft Knowledge Base:

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

×