Simptomi
Pretpostavimo da koristite AlwaysOn Availability grupu u Microsoft SQL Server 2012 ili SQL Server 2014 bazi podataka, a velika otvorena aktivna transakcija postoji i zahteva dodatni prostor za evidenciju. Kada datoteka evidencije ne može da raste iz jednog od sledećih razloga, transakcija neće uspeti.
-
Nedostatak dodatnog prostora u datoteci
-
Datoteka evidencije je konfigurisana da ne raste
-
Datoteka evidencije je dostigla konfigurisanu maksimalnu veličinu
Pored toga, dobijate sledeću poruku o grešci:
Greška: 9002, ozbiljnost: 17, stanje: 9.Evidencija transakcija za ime baze podataka "<database>" je puna zbog "LOG_BACKUP".
Kada pokrenete rezervnu kopiju evidencije, dobijate još jednu poruku o grešci 9002:
Greška: 9002, težina: 17, stanje: 9.Evidencija transakcija za ime baze podataka "<ime baze podataka>" je puna zbog "ACTIVE_TRANSACTION".
Nakon druge rezervne kopije evidencije, dobijate još jednu poruku o grešci 9002, a zatim poruku o grešci 5901:
Greška: 9002, težina: 17, stanje: 9.Evidencija transakcija za ime baze podataka "<database>" je puna zbog "AVAILABILITY_REPLICA".
Nije moguće zapisati zapis kontrolne tačke u bazu podataka <ime baze> jer evidencija nema dovoljno prostora. Obratite se administratoru baze podataka da biste skratili evidenciju ili dodelili više prostora datotekama evidencije baze podataka. Greška: 5901, ozbiljnost: 16, stanje: 1.Jedna ili više jedinica za oporavak koje pripadaju imenu baze podataka "<ime baze podataka>" nisu uspele da generišu kontrolnu tačku. Uzrok tome je obično nedostatak sistemskih resursa kao što su disk ili memorija ili u nekim slučajevima zbog oštećenja baze podataka. Ispitajte prethodne stavke u evidenciji grešaka da biste dobili detaljnije informacije o ovom otkazivanju.
Kada se nakon toga tokom vraćanje transakcije uzmu naredne kontrolne tačke ili rezervne kopije evidencije, možete dobiti sledeću poruku o grešci:
Msg 3052, Nivo 16, Država 1, linija 4BACKUP LOG nije mogla da evidentira ispravke za ime baze podataka "<baze podataka>". Naredne rezervne kopije evidencije će biti potrebne za napredovanje tačke pravljenja rezervne kopije sa '<LSN id 1>' na '<LSN id 2>' nakon što se prostor za evidenciju učinio dostupnim za evidentiranje.
Kada primite ove poruke, više nećete moći da prosledite nove transakcije u bazu podataka i ne možete da uzgajate datoteku evidencije ili da dodate drugu datoteku evidencije.
Rešenje
Problem je prvi put otklonjen u sledećoj kumulativnoj ispravki sql servera:
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Preporučujemo da preuzmete i instalirate najnovije kumulativne ispravke za SQL Server:
Rešenje
Sledeće zaobilaženje možete da koristite da biste skratili evidencije i nastavili aktivnost.
-
Proverite svaku sekundarnu repliku da biste proverili da li se sekundarna last_hardened_lsn (pogledajte sys.dm_hadr_database_replica_states) podudara sa primarnom replikom last_hardened_lsn. To možete da uradite pokretanjem sledećeg upita koji je povezan sa instancom primarne replike
SELECT ags.name as AGGroupName, ar.replica_server_name as InstanceName, hars.role_desc, db_name(drs.database_id)as DBName, drs.last_hardened_lsn, drs.log_send_queue_size, drs.synchronization_state_desc as SyncState, ar.availability_mode_desc as SyncMode, CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id FROM sys.dm_hadr_database_replica_states drs LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id LEFT JOIN sys.availability_groups ags ON ar.group_id = ags.group_id LEFT JOIN sys.dm_hadr_availability_replica_states hars ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id WHERE db_name(drs.database_id) = '<database name>'
-
Na primarnoj replici
-
Uklonite bazu podataka iz grupe dostupnosti.
-
Ponovo dodajte bazu podataka grupi dostupnosti.
-
-
Na svakoj sekundarnoj replici
-
Ponovo dodajte bazu podataka grupi dostupnosti.
-
Uklanjanjem baze podataka iz grupe dostupnosti, ona će odmah skratiti svoje evidencije i osloboditi prostor za evidenciju. Ako je last_hardened_lsn na svakoj sekundarnoj replici identičan primarnoj replici, a rezervne kopije evidencije se ne uzimaju u toku uklanjanja baze podataka iz grupe dostupnosti i ponovnog dodavanja baze podataka na svaku sekundarnu, sekundarna replika će uspešno biti ponovo dodata bez grešaka ili morati da vrati rezervne kopije evidencije na sekundarni. Ako sekundarna replika nije aktuelna sa primarnom replikom i morate da uklonite bazu podataka iz grupe dostupnosti da bi sekundarna mogla da je nadoknadi, ta sekundarna replika će možda morati da vrati rezervne kopije evidencije da biste je uhvatili pre ponovnog dodavanja u grupu dostupnosti ili da je otpustite na sekundarnu repliku i ponovo je zaseju sa kompletnom rezervnom kopijom baze podataka evidencije transakcija.
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".