Požymiai
Tarkime, kad naudojate "AlwaysOn Availability" grupę "Microsoft „SQL Server“ 2012" arba "„SQL Server“ 2014" duomenų bazėje ir yra didelė atidaryta aktyvi operacija ir reikia papildomos žurnalo vietos. Kai žurnalo failas negali didėti dėl kurios nors iš toliau pateiktų priežasčių, operacija nepavyksta.
- Trūksta papildomos vietos faile
- Žurnalo failas sukonfigūruotas nedidėti
- Žurnalo failas pasiekė sukonfigūruotą maksimalų dydį
Be to, gaunate šį klaidos pranešimą:
Pastaba
Klaida: 9002, sunkumas: 17, būsena: 9.
Duomenų bazės "<duomenų bazės pavadinimas>" operacijų žurnalas yra pilnas dėl "LOG_BACKUP".
Paleidę žurnalo atsarginę kopiją, gausite dar vieną 9002 klaidos pranešimą:
Pastaba
Klaida: 9002, sunkumas: 17, būsena: 9.
Duomenų bazės "<duomenų bazės pavadinimas>" operacijų žurnalas yra pilnas dėl "ACTIVE_TRANSACTION".
Po dar vienos žurnalo atsarginės kopijos kūrimo gausite kitą 9002 klaidos pranešimą, o po to 5901 klaidos pranešimą:
Pastaba
Klaida: 9002, sunkumas: 17, būsena: 9.
Duomenų bazės "<duomenų bazės pavadinimas>" operacijų žurnalas yra pilnas dėl "AVAILABILITY_REPLICA".
Pastaba
Duomenų bazės <pavadinime> nepavyko įrašyti kontrolinio taško įrašo, nes žurnale trūksta vietos. Paprašykite duomenų bazės administratoriaus sutrumpinti žurnalą arba skirti daugiau vietos duomenų bazės žurnalo failams.
Klaida: 5901, sunkumas: 16, būsena: 1.
Vienam ar daugiau atkūrimo įrenginių, priklausančių duomenų bazei "<duomenų bazės pavadinimas>", nepavyko sukurti kontrolinio taško. Paprastai taip nutinka dėl sistemos išteklių, pvz., disko arba atminties, trūkumo arba kai kuriais atvejais dėl duomenų bazės sugadinimo. Norėdami gauti išsamesnės informacijos apie šią triktį, peržiūrėkite ankstesnius klaidų žurnalo įrašus.
Kai atšaukiant operaciją padaromos vėlesnės kontrolinio taško arba žurnalo atsarginės kopijos, galite gauti šį klaidos pranešimą:
Pastaba
Pranešimas 3052, 16 lygis, 1 būsena, 4 eilutė
BACKUP LOG nepavyko užregistruoti duomenų bazės<pavadinimo> naujinimų. Vėlesnės žurnalo atsarginės kopijos bus reikalingos norint perkelti atsarginį tašką iš "<LSN id 1>" į "<LSN id 2>", kai bus atlaisvinta žurnalo vieta jų registravimui.
Kai gaunate šiuos pranešimus, nebegalite pateikti jokių naujų operacijų į duomenų bazę ir negalite išplėsti žurnalo failo arba įtraukti kito žurnalo failo.
Sprendimas
Problema pirmą kartą buvo išspręsta šiame kaupiamajame "„SQL Server“" naujinime:
- 3 kaupiamasis naujinimas, skirtas „SQL Server“ SP1
- 10 kaupiamasis naujinimas, skirtas „SQL Server“ 2014
- 8 kaupiamasis naujinimas, skirtas „SQL Server“ 2012 SP2
Rekomendacija: įdiekite naujausią "„SQL Server“" kaupiamąjį naujinimą
Kiekviename naujame „SQL Server“ kaupiamajame naujinime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Rekomenduojame atsisiųsti ir įdiegti naujausius kaupiamuosius "„SQL Server“" naujinimus:
- Naujausias kaupiamasis naujinimas, skirtas „SQL Server“ 2014 SP1
- Naujausias "„SQL Server“ 2014" kaupiamasis naujinimas
- Naujausias kaupiamasis naujinimas, skirtas „SQL Server“ 2012 SP2
Sprendimo būdas
Galite naudoti šį sprendimo būdą, kad sutrumpintumėte žurnalus ir tęstumėte veiklą.
Patikrinkite kiekvieną antrinę repliką, kad įsitikintumėte, jog antrinės replikos last_hardened_lsn (žr. sys.dm_hadr_database_replica_states) atitinka pirminės replikos last_hardened_lsn. Tai galite padaryti įvykdę šią užklausą, kuri yra prijungta prie pirminio replikos egzemplioriaus
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>'Pirminėje replikoje
- Pašalinkite duomenų bazę iš pasiekiamumo grupės.
- Iš naujo įtraukite duomenų bazę į pasiekiamumo grupę.
Kiekvienoje antrinėje replikoje
- Iš naujo įtraukite duomenų bazę į pasiekiamumo grupę.
Pašalinus duomenų bazę iš prieinamumo grupės, ji iš karto sutrumpins žurnalus ir atlaisvins žurnalo vietos.
Jei kiekvienos antrinės replikos last_hardened_lsn yra identiškas pirminės replikos ir atliekant duomenų bazės šalinimo iš prieinamumo grupės ir iš naujo įtraukiant duomenų bazę kiekvienoje antrinėje replikoje nedaromos žurnalo atsarginės kopijos, antrinė replika bus sėkmingai įtraukta iš naujo be klaidų ir neatkuriant žurnalo atsarginių kopijų antrinėje.
Jei antrinė replika nevykdoma su pirmine replika ir turite pašalinti duomenų bazę iš prieinamumo grupės, kad antrinė replika galėtų ją pasivyti, gali reikėti atkurti žurnalo atsargines kopijas, kad ją pasivytų prieš iš naujo įtraukiant ją į prieinamumo grupę, arba pašalinti duomenų bazę antrinėje replikoje ir iš naujo sukurti visą ir operacijų žurnalo duomenų bazės atsarginę kopiją.
Būsena
„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.