Simptome
Să presupunem că utilizați caracteristica grupuri de disponibilitate AlwaysOn în Microsoft SQL Server 2012. Atunci când modificați accesul la conexiune al reproducerii secundare din "lizibil" la "ilizibil", apare o corupție în paginile care utilizează comprimarea paginilor în reproducerea dată.Bazele de date de disponibilitate care întâmpină această problemă la reproducerea secundară nu se pot recupera din cauza unei erori în timpul fazei de refacere a sincronizării. Reproducerea secundară nu se va sincroniza cu reproducerea principală și raportează o stare de sincronizare "SUSPEND_FROM_REDO". În plus, primiți următoarele mesaje de eroare în Jurnalul de erori al SQL Server care găzduiește replica secundară:
<dată> <dată> SPID<ID> eroare: 17066, severitate: 16, stare: 1. <dată> <timp> SPID> <0 ID> SQL Server afirmație: File: <Page. cpp>, line = 3898 failed afirmația = '! pageFull '. Această eroare poate avea legătură cu sincronizarea. Dacă eroarea persistă după ce refaceți instrucțiunea, utilizați DBCC CHECKDB pentru a verifica baza de date pentru integritatea structurală sau reporniți serverul pentru a vă asigura că structurile de date din memorie nu sunt deteriorate. <data> <timp> SPID<ID> eroare: 3624, severitate: 20, stat: 1. <dată> <timp> SPID> <0 ID> o verificare a sistemului de afirmare a Verificați jurnalul de erori SQL Server pentru detalii. De obicei, o eroare de afirmație este cauzată de un defect de software sau de o deteriorare a datelor. Pentru a căuta corupția bazei de date, luați în considerare executarea DBCC CHECKDB. Dacă ați fost de acord să trimiteți gropi la Microsoft în timpul instalării, va fi trimis un mini dump către Microsoft. Este posibil ca o actualizare să fie disponibilă de la Microsoft în cel mai recent pachet Service Pack sau într-o QFE de asistență tehnică. <data> <timp> SPID<ID> grupuri de disponibilitate AlwaysOn mișcarea de date pentru baza de date ' <numele bazei de date> ' a fost suspendat din următorul motiv: "sistem" (ID sursă 2; Șir sursă: ' SUSPEND_FROM_REDO '). Pentru a relua mișcarea de date în baza de date, va trebui să reluați manual baza de date. Pentru informații despre cum să reluați o bază de date de disponibilitate, consultați SQL Server Books Online. <data> <timp> SPID<ID> eroare: 3313, severitatea: 21, stat: 2. <dată> <timp> SPID> <0 ID> în timpul refacerii unei operațiuni înregistrate în baza de date "<Nume bază de date>", a apărut o eroare la 1786:4978584:74 ID înregistrare De obicei, eroarea specifică a fost înregistrată anterior ca o eroare în Serviciul jurnal de evenimente Windows. Restaurați baza de date dintr-o copie de rezervă completă sau reparați baza de date. <dată> <dată> SPID<ID> ALTER dB Param: reluare<dată> <timp> SPID> <0 ID> AlwaysOn disponibilitatea grupurilor de date pentru baza de date ' <bază de date nume> ' a fost reluată. Acesta este doar un mesaj informational. Nu este necesară nicio acțiune de utilizator. <data> <timp> SPID<ID> tranzacții necalificate sunt redate în baza de date <Nume bază de date> pentru o modificare a stării grupurilor de disponibilitate cu AlwaysOn. Finalizarea estimată a revenirii: 100%. Acesta este doar un mesaj informational. Nu este necesară nicio acțiune de utilizator. <dată> <dată> SPID<ID> grupuri de disponibilitate AlwaysOn conexiune cu baza de date primară încheiată pentru baza de date secundară "<numele bazei de date>" din reproducerea de disponibilitate cu ID-ul de reproducere: {bbdedecb-f26b-47e9-9e7d-7c22f99edb23}. Acesta este doar un mesaj informational. Nu este necesară nicio acțiune de utilizator. <data> <timp> SPID<ID> pornirea bazei de date ' <numele bazei de date> '. <dată> <timp> SPID> <2 ID> recuperarea bazei de date ' <nume bază de date> ' (13) este 0% finalizat (aproximativ 781 secunde rămân). Faza 1 din 3. Acesta este doar un mesaj informational. Nu este necesară nicio acțiune de utilizator.......
Rezolvare
Problema a fost remediată pentru prima dată în următoarea actualizare cumulativă de SQL Server.
Actualizarea cumulativă 6 pentru SQL server 2012 SP2 Actualizare cumulativă 16 pentru SQL Server 2012 SP1
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Mai multe informații
Problema anterioară poate apărea atunci când accesul la citire este modificat pentru reproducerea secundară. Aveți posibilitatea să setați accesul la bazele de date de disponibilitate în reproducerea secundară, utilizând următoarele două metode:
-
Setați accesul de citire utilizând comanda ALTER-disponibilitatea grupului:
ALTER AVAILABILITY GROUP [AGName]MODIFY REPLICA ON N'<SRV>' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = NO))
-
Setați accesul de citire modificând setările din obiectul Explorer din SQL Server Management Studio (SSMS):
-
Conectați-vă la server, apoi deschideți folderul disponibilitate AlwaysOn.
-
Deschideți folderul Grupuri de disponibilitate.
-
Faceți clic cu butonul din dreapta pe grupul disponibilitate și selectați Proprietăți.
-
Modificați proprietatea secundară lizibilă pentru replica secundară la nu, apoi faceți clic pe OK.
-
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.