DBCC CHECKDB:n suorittaminen SQL-tietokannan eheyden tarkistamiseksi

Tietokantakonsolin komentoa CHECKDB (DBCC CHECKDB)käytetään SQL Server -tietokannan objektien eheyden (fyysisen & loogisen) tarkistamiseen.Komentoa tuetaan tietokannoissa, jotka sisältävät muistioptimoituja taulukoita, mutta validointia tuetaan vain levyyn perustuvissa tauluissa. DBCC repair -vaihtoehto ei ole käytettävissä muistioptimoiduissa taulukoissa, minkä vuoksi tarvitaan säännöllistä tietokannan varmuuskopiointia.Jos muistioptimoidussa taulussa ilmenee ongelma, tiedot voidaan palauttaa viimeksi tehdystä varmuuskopiosta.

CHECKDB:n suorittamat eri operaatiot ovat:

  • DBCC CHECKALLOC:n suoritus SQL-tietokannassa.
  • DBCC CHECKTABLE:n suoritus SQL-tietokannan jokaisessa taulussa ja näkymässä.
  • DBCC CHECKCATALOG:n suoritus SQL-tietokannassa.
  • DBCC CHECKCATALOG:n suoritus SQL-tietokannassa.
  • Linkkitason yhdenmukaisuuden tarkistaminen tiedostohakemistojen ja taulukon metatietojen keskellä.
  • Palveluvälittäjän tietojen tarkistaminen.

Koska DBCC CHECKDB suorittaa kaikki muut komennot, CHECKALLOC-, CHECKTABLE- ja CHECKCATALOG-komentoja ei ole tarpeen suorittaa erikseen.

DBCC CHECKDB Syntaksi

Yllä olevassa syntaksissa käytetyt argumentit merkitsevät seuraavaa:

database_name | database_id | 0 Tämä on tietokannan nimi.jos nimeä ei merkitä tai kirjoitetaan vain 0, käytetään nykyistä tietokantaa. NOINDEX Määrittää, että klusteroimattomien indeksitaulujen eheystarkastusta ei suoriteta. Tämä johtaa koko suoritusajan lyhenemiseen.Tämä syntaksi ei vaikuta taulukoissa oleviin tietoihin. REPAIR_ALLOW_DATA_LOSS Tämä syntaksi korjaa tietokannassa havaitut virheet.Tämä voi johtaa joidenkin tietojen häviämiseen.

Huomautus: Tämä syntaksi on Microsoftin tukema, eikä se joka kerta osoittaudu ihanteelliseksi ratkaisuksi tietokannan muuttamiseksi hyvään fyysiseen tilaan. Tämä johtuu siitä, että se poistaa koko korruptoituneeksi havaitun datan ja voi johtaa suurempaan datan menetykseen, kuin mitä tietokannalle alun perin tehtiin.siksi se tulisi ottaa käyttöön viimeisenä keinona.

REPAIR_FAST Tämä argumentti ylläpitää vain taaksepäin yhteensopivuutta eikä suorita mitään korjauksia. REPAIR REBUILD Tämä argumentti sisältää nopeamman korjausprosessin, joka ei aiheuta uhkaa tietojen menetyksestä. ALL_ERRORMSGS Tämä näyttää kaikki kaikissa objekteissa syntyneet virheet. Tämän syntaksin sisällyttämisellä tai pois jättämisellä ei ole mitään vaikutusta, koska virheilmoitukset lajitellaan yleensä objektin ID:n mukaan. Syntyvien virheilmoitusten enimmäismäärä voi olla jopa 1000. EXTENDED_LOGICAL_CHECKS Tämä argumentti suorittaa loogisen johdonmukaisuustarkastuksen näkymille ja indekseille vain, jos yhteensopivuustaso on 100. NO_INFOMSGS Se poistaa kaikki tiedotusviestit. TABLOCK Tällä syntaksilla saadaan yksinoikeuslukko tietokantaan, ja se lisää DBCC CHECKDB:n nopeutta tietokannassa suuren kuormituksen aikana. Se kuitenkin vähentää tietokannan käytettävyyttä samanaikaisia operaatioita varten. ESTIMATEONLY Tämä määrittää tai arvioi, kuinka paljon tilaa tietokanta tarvitsee CHECKDB-komennon suorittamiseen. PHYSICAL_ONLY Tämä rajoittaa vain tietokannan fyysisen rakenteen tarkistamista. Fyysisen tietokannan lyhyen yleistarkastuksen yhteydessä havaitaan repeytyneet sivut, viat ja käyttäjien kohtaamat yleiset ongelmat. DATA PURITY Tällä syntaksilla tarkistetaan sarakkeiden arvot, jotka ovat joko alueen ulkopuolella tai jotka eivät ole kelvollisia. Sarake-arvojen eheystarkastukset ovat oletusarvoisesti käytössä, eikä DATA_PURITY-syntaksia tarvita.

Huomioon otettavia asioita

  • DBCC CHECKDB ei voi tarkistaa käytöstä poistettuja indeksejä.
  • Käyttäjän määrittelemät ja tavujärjestyksessä olevat tyypit on serialisoitava, jos DBCC CHECKDB on suoritettava. Muussa tapauksessa syntyy virhe 2537.
  • DBCC CHECKDB:tä ei voi suorittaa suoraan Resurssitietokantaan, koska sitä voidaan muokata vain yksitilassa.

DBCC CHECKDB:n tuottamat virheilmoitukset

Kun CHECKDB-komennon suoritus lopetetaan, SQL-virhelokiin kirjoitetaan viesti. Jos komento onnistuu, se luo viestin, jossa ilmoitetaan onnistuminen ja kokonaisaika, jonka komento suoritettiin. Epäonnistumisen yhteydessä prosessi lopetetaan jonkin virheen esiintymisen vuoksi, mikä ilmoitetaan viestillä. Virheilmoitusta kuvaavat eri tila-arvot ovat:

Virheilmoitus

Kun CHECKDB-komento havaitsee korruption, SQL-palvelimen lokihakemistoon luodaan dumppitiedosto nimeltä SQLDUMPNNNN.txt. Jos SQL:ssä on otettu käyttöön ominaisuus Käyttötietojen keruu ja Virheraportointi, virheraportti lähetetään Microsoftille parannustarkoituksiin.

Tietokannan palauttaminen

Skenaariossa, jossa SQL-palvelimessa syntyy virheitä, suositellaan tietokannan korjaamisen sijaan tietokannan palauttamista viimeksi luodusta varmuuskopiosta.Jos varmuuskopiota ei ole olemassa, voit valita korjausvaihtoehdot. Mutta korjauksen valitseminen REPAIR_ALLOW_DATA_LOSSin avulla voi johtaa joidenkin tietojen poistamiseen.

Vaihtoehtoinen ratkaisu tietokannan palauttamiseen

Periaatteessa DBCC CHECKDB -komennolla tarkistetaan tietokannan johdonmukaisuudet, mukaan lukien fyysiset tai loogiset. Tämä komento tarkistaa SQL-palvelimen tietokannan sivut, indeksin ja joitakin muita komponentteja, mutta joissakin kriittisissä kohdissa tämä päättää kieltäytyä SQL-tietokannan palauttamisesta. Jos MS SQL-palvelimen tietokannan varmuuskopio puuttuu, valitut korjausvaihtoehdot voivat poistaa huomattavan määrän tietoja.Siksi, jotta voit palauttaa tietokannan vaarantamatta tietojen eheyttä, voit valita Microsoft SQL -tietokannan palautusratkaisun. Ne takaavat tietokannan täydellisen palautumisen poistamatta mitään tietomäärää.

Vastaa

Sähköpostiosoitettasi ei julkaista.