Ongelman ilmenemistapa
Oletetaan, että Microsoft SQL Server 2012- tai SQL Server 2014 -tietokannassa on käytössä AlwaysOn-käytettävyysryhmä ja että olemassa on suuri avoin aktiivinen tapahtuma, joka vaatii lisää lokitilaa. Jos lokitiedosto ei voi kasvaa jostakin seuraavista syistä, tapahtuma epäonnistuu.
- Ylimääräisen tiedostotilan puute
- Lokitiedosto on määritetty siten, että se ei kasva
- Lokitiedoston enimmäiskoko on saavutettu
Lisäksi näyttöön tulee seuraava virhesanoma:
Huomautus
Virhe: 9002, vakavuus: 17, tila: 9.
Tietokannan '<tietokannan nimi>' tapahtumaloki on täysi sanan "LOG_BACKUP" vuoksi.
Kun olet suorittanut lokin varmuuskopioinnin, näyttöön tulee toinen 9002-virhesanoma:
Huomautus
Virhe: 9002, vakavuus: 17, tila: 9.
Tietokannan '<tietokannan nimi>' tapahtumaloki on täysi sanan "ACTIVE_TRANSACTION" vuoksi.
Toisen lokin varmuuskopioinnin jälkeen saat toisen 9002-virheilmoituksen, jonka jälkeen 5901-virhesanoman:
Huomautus
Virhe: 9002, vakavuus: 17, tila: 9.
Tietokannan '<tietokannan nimi>' tapahtumaloki on täydellinen, koska AVAILABILITY_REPLICA'.
Huomautus
Tarkistuspistetietuetta ei voitu kirjoittaa tietokannan <tietokannan nimeen> , koska lokissa ei ole tilaa. Pyydä tietokannan järjestelmänvalvojaa katkaisemaan loki tai varaamaan lisätilaa tietokannan lokitiedostoille.
Virhe: 5901, vakavuus: 16, tila: 1.
Yksi tai useampi palautusyksikkö, joka kuuluu tietokantaan '<tietokannan nimi>', epäonnistui luomaan tarkistuspistettä. Tämä johtuu yleensä järjestelmäresurssien, kuten levyn tai muistin, puutteesta tai joissakin tapauksissa tietokannan vioittumisesta. Saat virheestä tarkempia tietoja virhelokin aiemmista merkinnöistä.
Kun seuraavat tarkistuspisteet tai lokivarmuuskopiot otetaan tapahtuman palautuksen aikana, näyttöön voi tulla seuraava virhesanoma:
Huomautus
Msg 3052, taso 16, tila 1, rivi 4
BACKUP LOG ei pystynyt kirjaamaan tietokannan '<tietokannan nimi>' päivityksiä. Myöhemmät lokin varmuuskopiot vaaditaan, jotta varmuuskopiopiste voidaan nostaa<LSN ID 1:stä>LSN< ID 2:een >sen jälkeen, kun lokitila on käytettävissä niiden kirjaamista varten.
Kun saat tällaisia viestejä, et voi enää lähettää uusia tapahtumia tietokantaan, et voi kasvattaa lokitiedostoa etkä lisätä uutta lokitiedostoa.
Ratkaisu
Ongelma korjattiin ensimmäisen kerran seuraavassa SQL Server kumulatiivisessa päivityksessä:
- SQL Server 2014 SP1:n kumulatiivinen päivitys 3
- SQL Server 2014:n kumulatiivinen päivitys 10
- SQL Server 2012 SP2:n kumulatiivinen päivitys 8
Suositus: Asenna uusin kumulatiivinen päivitys SQL Server:lle
Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Suosittelemme, että lataat ja asennat uusimmat kumulatiiviset päivitykset SQL Server:lle:
- SQL Server 2014 SP1:n uusin kumulatiivinen päivitys
- SQL Server 2014:n uusin kumulatiivinen päivitys
- SQL Server 2012 SP2:n uusin kumulatiivinen päivitys
Vaihtoehtoinen menetelmä
Seuraavan vaihtoehtoisen menetelmän avulla voit katkaista lokit ja jatkaa toimintaa.
Tarkista jokainen toissijainen replika varmistaaksesi, että toissijainen replika last_hardened_lsn (katso sys.dm_hadr_database_replica_states) vastaa ensisijaisen replikan last_hardened_lsn. Voit tehdä tämän suorittamalla seuraavan kyselyn, joka on yhdistetty ensisijaiseen replikaesiintymään
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>'Ensisijaisessa replikassa
- Poista tietokanta käytettävyysryhmästä.
- Lisää tietokanta uudelleen käytettävyysryhmään.
Jokaisessa toissijaisessa replikassa
- Lisää tietokanta uudelleen käytettävyysryhmään.
Kun poistat tietokannan käytettävyysryhmästä, se katkaisee välittömästi lokinsa ja vapauttaa lokitilaa.
Jos kunkin toissijaisen replikan last_hardened_lsn on identtinen ensisijaisen replikan kanssa, eikä lokivarmuuskopioita tehdä, kun tietokanta poistetaan käytettävyysryhmästä ja lisätään uudelleen kuhunkin toissijaiseen tietokantaan, toissijainen replika voidaan lisätä uudelleen ilman virheitä tai ilman lokien varmuuskopioiden palauttamista toissijaiseen tietokantaan.
Jos toissijainen replika ei ole ajan tasalla ensisijaisen replikan kanssa ja tietokanta on poistettava käytettävyysryhmästä, ennen kuin toissijainen replika voi saada kiinni, toissijaisen replikan lokivarmuuskopiot on ehkä palautettava, jotta se saadaan kiinni ennen sen lisäämistä uudelleen käytettävyysryhmään, tai se on pudotettava toissijaiseen replikaan ja lisättävä siihen täysi varmuuskopio sekä tapahtumalokin tietokannan varmuuskopio.
Tila
Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.