Edukien aurkibidea ezkutatu

Datu-basearen ustelkeria dena da SQL Server administratzailearen amesgaiztoa. Negozio-datu kritikoak eskuraezinak edo fidagarriak ez direnean, cost suntsitzailea izan daiteke. Gida oso honek DBCC CHECKDB erabiltzeari buruz jakin behar duzun guztia biltzen du datu-basearen osasuna mantentzeko eta hondatzea saihesteko, eta tresna estandarrak nahikoak ez direnean berreskuratzeko irtenbide aurreratuak ere eskaintzen ditu.

1. Garrantzitsutasuna SQL Server Datu-basearen osasuna

1.1 Zer Datu Baseen Ustelkeria Costnegozioak

Gaur, m.ost Enpresek datu-baseetan gordetzen dituzte beren datu kritikoak. Datu-baseen hondatzea gertatzen denean, ondorioak katastrofikoak dira:

  • Finantza-galerak batez beste 2.3 milioi dolar urtean datu-galeren ondorioz, hardware-akatsak eta ustelkeria izanik arrazoi nagusiak (EMC Corporation)
  • Negozioen itxiera-tasak Erakusten dute hardware-akatsen ondorioz datuak galtzen dituzten enpresa txikien % 50ek bi urteko epean itxi egiten dutela, eta datu-galera katastrofikoak dituzten enpresen % 94k ez dutela batere bizirik irauten.
  • Datuen usteltzearen maiztasuna Urtero misio kritikoetarako aplikazioen % 20ri eragiten dio, negozioen jarraitutasunean etenaldiak eraginez (Gartner ikerketa)
  • Hardwarearekin lotutako ustelkeria Disko gogorraren matxuren eta sistemaren hutsegiteen ondoriozko datu-galeren % 67a da, eta datu-galeren % 40a hardwarearen matxuren ondoriozkoa da zuzenean.
  • Softwarearen ustelkeria costs milaka eta milioika dolar artekoak dira, larritasunaren eta irismenaren arabera, enpresen % 82k aurreikusi gabeko etenaldiak izan baitituzte, eta horien artean ustelkeria izan da kausa nagusia.

1.2 Zergatik diren funtsezkoak aldizkako osasun-azterketak

Jendeak aldizkako osasun-azterketak behar ditu gaixotasun potentzialak goiz detektatzeko. Era berean, datu-baseek ere aldizkako osasun-azterketak behar dituzte:

  1. Balizko ustelkeria goiz detektatu eta berehala kudeatu, arazoak larriagoak eta hedatuak bihurtzea saihestuz, eta horrek ondorio katastrofikoak ekar ditzake negozioarentzat.
  2. Ziurtatu datu-baseak errendimendu optimoan funtzionatzen duela.
  3. Cost Datu-basearen osasun-egiaztapen proaktiboen tasa askoz txikiagoa da datu-basearen hondamendi bat gertatu ondoren datuak berreskuratzeko erreaktiboarena baino.

1.3 Datu-baseen osotasun komandoen sarrera

SQL Server datu-basearen osasuna mantentzeko hainbat komando integratuak eskaintzen ditu, DBCC CHECKDB m gisa zerbitzatzenost Osotasuna egiaztatzeko tresna integrala eskuragarri. Komando hauek elkarrekin lan egiten dute zure datu-basearen egituraren alderdi desberdinak egiaztatzeko, taula indibidualetatik hasi eta datu-base osoaren koherentziaraino, zure datuak seguru eta eskuragarri mantentzen dituen mantentze-estrategia oso bat osatuz.

2. Zer da DBCC CHECKDB?

DBCC CHECKDB is SQL Serverdatu-baseen osotasuna egiaztatzeko eta ustelkeria arazoak identifikatzeko tresna nagusia.

  • T-SQL adierazpen bat da, ez GUI tresna bat.
  • Ohiko metodoen bidez exekutatu dezakezu, hala nola SQL Server Kudeaketa Estudioa (SSMS), SQL Server Agente, SQLCMD, etab.

2.1 Zer egiaztatzen du CHECKDB-k zure datu-basean

DBCC CHECKDB exekutatzen duzunean, komandoak hainbat balidazio geruza egiten ditu zure datu-basearen egituran zehar:

  • Orrialdeen kontrol-baturen egiaztapena ustelkeria fisikoa eta hardwarearekin lotutako arazoak detektatzeko
  • Indizearen koherentziaren balidazioa datuak behar bezala berreskuratzeko eta kontsulten errendimendua bermatzeko
  • Esleipen egituraren egiaztapenak espazioaren erabilera eta orrialdeen esleipen zehatza berresteko
  • Erreferentziazko osotasun azterketa erlazionatutako taulen eta kanpoko gakoen arteko erlazioen artean
  • Sistemaren taularen koherentziaren balidazioa bermatzeko SQL Serverbarneko metadatuak fidagarriak izaten jarraitzen dute
  • Datu-orrialdeen loturaren egiaztapena orrialde-katearen osotasun egokia berresteko
  • Datu-basearen eskemaren koherentzia objektuen definizioak eta mendekotasunak balioztatzeko

Egiaztapen integral hauek erabiltzaileen datuak eta sistemaren egiturak hartzen dituzte barne, zure datu-basearen osasun-egoeraren ikusgarritasun osoa eskainiz.

3. DBCC CHECKDB exekutatzea: urratsez urrats

3.1 Baldintzak

Jarraian, DBCC CHECKDB eragiketa bat exekutatu aurretik bete beharreko kontrol-zerrenda dago:

  • Datu-basearen babeskopia osoa – Osotasun-egiaztapenak egin aurretik, babes-sare oso bat sortu, hondatzea aurkitzen bada edo konponketa-eragiketak beharrezkoak badira.
  • Baimen egokiak – DBCC CHECKDB komandoak exekutatzeko sysadmin edo db_owner baimenak behar dituzu
  • Sistemaren baliabide nahikoak:
    • Memoria: datu-basearen tamainaren % 25
    • Tempdb espazioa: datu-basearen tamainaren % 10-15
    • CPUa: % 50-70eko erabilgarritasuna mantentze-lanetan
    • S/I: Irakurketa-eragiketa astunak espero
  • Datu-baseen irisgarritasuna – Egiaztatu zure datu-basea eskuragarri dagoela eta ez dagoela egoera mugatuan, CHECKDB-k datu-baseko orrialde guztietarako irakurketa-sarbidea behar baitu.

3.2 Oinarrizko komandoa

Most DBCC CHECKDB oinarrizko komandoak hiru aldaera ohiko ditu:

(1) Egiaztatu uneko datu-basea (parametrorik gabe):

DBCC CHECKDB

(2) Datu-base bat izenaren arabera egiaztatu:

DBCC CHECKDB ('YourDatabaseName')

(3) Egiaztatu datu-base bat IDaren arabera:

DBCC CHECKDB(5)  -- Replace 5 with your database ID

Oinarrizko komando honek zehaztutako datu-basearen osotasun-egiaztapen osoa egiten du, taula, indize eta sistemaren egitura guztiak aztertuz. Hutsunerik gabeko izen estandarrak dituzten datu-baseetarako, komatxoak kendu ditzakezu. Komandoa amaitu arte exekutatuko da, aurrerapen-mezuak eta azken emaitzak erakutsiz. Oinarrizko sintaxi hau ezin hobeto funtzionatzen du datu-base txikiagoetarako edo mantentze-lanetarako denbora nahikoa duzunean.

Jarraian, DBCC CHECKDB exekutatzen duen pantaila-argazki bat dago SQL Server Kudeaketa Estudioa (SSMS):

DBCC CHECKDB exekutatzen ari den pantaila-argazkia SQL Server Management Studio (SSMS), irteerako emaitzak barne.

3.3 Aukera osoak

Jarraian, DBCC CHECKDB-ren aukera osoak daude:

Kategoria Aukera Deskribapena DBCC CHECKDB adibidea
Konponketa aukerak REPAIR_REBUILD Datuen galerarik gabeko konponketak (adibidez, indizeen berreraikuntzak) DBCC CHECKDB ('MyDB', REPAIR_REBUILD)
REPAIR_FAST Konponketarik ez. Atzeranzko bateragarritasuna bakarrik. DBCC CHECKDB ('MyDB', REPAIR_FAST)
REPAIR_ALLOW_DATA_LOSS Akats guztiak konpontzen ditu (datuak galtzea eragin dezake) DBCC CHECKDB ('CorruptDB', REPAIR_ALLOW_DATA_LOSS)
Eremuaren Kontrola NOINDEX Indize multzokatu gabeko egiaztapenak saltatzen ditu DBCC CHECKDB ('LargeDB', NOINDEX)
PHYSICAL_ONLY Biltegiratze fisikoaren osotasuna soilik egiaztatzen du (orrialdeak/erregistroak) DBCC CHECKDB ('ProdDB', PHYSICAL_ONLY)
DATA_PURITY Zutabe-balio logikoen erroreak egiaztatzen ditu (adibidez, data baliogabeak) DBCC CHECKDB ('OldDB', DATA_PURITY)
EXTENDED_LOGICAL_CHECKS Logika-egiaztapen sakonak (ikuspegi indexatua, XML/indize espazialak) DBCC CHECKDB ('ComplexDB', EXTENDED_LOGICAL_CHECKS)
Irteeraren kontrola ALL_ERRORMSGS Errore guztiak erakusten ditu (lehenetsia: 200 objektu bakoitzeko) DBCC CHECKDB ('MyDB', ALL_ERRORMSGS)
NO_INFOMSGS Informazio-mezuak ezkutatzen ditu DBCC CHECKDB ('MyDB', NO_INFOMSGS)
Performance TABLOCK Taularen blokeoak erabiltzen ditu (TempDBren erabilera murrizten du baina idazketak blokeatzen ditu) DBCC CHECKDB ('BigDB', TABLOCK)
MAXDOP = number Paralelismoaren ezarpenak gainidazten ditu DBCC CHECKDB ('MyDB', MAXDOP = 2)
Utility ESTIMATEONLY TempDB-k behar duen espazioa kalkulatzen du. (ez dago benetako egiaztapenik) DBCC CHECKDB ('MyDB', ESTIMATEONLY)

4. Zure emaitzak ulertzea

DBCC CHECKDB-k emaitza desberdinak sortuko ditu exekuzioa behar bezala burutzen den ala ez kontuan hartuta. Azalduko ditugu xehetasunez.

4.1 CHECKDB exekuzioa arrakastaz burutu da

DBCC CHECKDB exekuzioa behar bezala burutzen bada, emaitza mota desberdinak jakinaraziko ditu zure datu-basearen osasun-egoeraren arabera.

4.1.1 Ez da arazorik aurkitu

DBCC CHECKDB-k arazorik aurkitzen ez badu, honelako irteera ikusiko duzu:

CHECKDB found 0 allocation errors and 0 consistency errors in database 'YourDatabase'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Emaitza honek adierazten du zure datu-baseak osotasun perfektua mantentzen duela egiaztatutako egitura guztietan.

4.1.2 Aurkitutako ustelkeria-erroreak

DBCC CHECKDB-k ustelkeria-errore bat detektatzen duen bakoitzean, errore-mezu bat emango du egitura honekin:
DBCC CHECKDB errore-mezuen egituraren azalpen zehatza, atal bakoitzaren esanahia barne.Larritasun Mailaren Gida:

  • 16-19 maila: Erabiltzaileak zuzendu daitezkeen akatsak, askotan ustelkeria txikia
  • 20-24 maila: Sistemaren akatsak, berehalako arreta behar duen ustelkeria larria
  • 25. maila: Errore larriak, baliteke datu-basera sartzea ezinezkoa izatea

Ohiko erroreak hauek dira:

  • Orrialdearen egiaztapen-baturaren akatsak (824 mezua)
  • Esleipen-erroreak (8928 mezua)
  • Indizearen koherentzia arazoak (8964 mezua)

Mezuaren egitura ulertzeak erantzun-ekintzak lehenesteko eta berreskuratze-estrategia egokiak zehazteko balio du.

4.1.3 Ohiko informazio- eta abisu-mezuak

DBCC CHECKDB irteera guztiek ez dute arazo larriak adierazten. Informazio- eta abisu-mezu batzuk ere sor ditzake, besteak beste:

  • Konponketa-adierazpenak – Arazo txikiak konpontzeko konponketa-komandoak iradokitzen dituzten mezuak
  • Esleipen-abisuak – Datuen sarbidean eragiten ez duten espazio-esleipenari buruzko abisuak
  • Errendimendu gomendioak – Indizeen mantentze-lanetarako eta optimizaziorako iradokizunak
  • Informazio-oharrak – Berehalako ekintzarik behar ez duten egoera-mezu orokorrak

Mezu hauek mantentze-lanetarako orientabide baliotsuak eskaintzen dituzte, berehalako ekintza behar duen ustelkeria kritikoa eta ohiko mantentze-leihoetan konpondu daitezkeen arazo txikiak bereizten dituzten bitartean.

Abisu-mezuaren adibidea:

DBCC results for 'InventoryDatabase'.
Msg 2570, Level 16, State 3, Line 1
Page (2:8452), slot 17 in object ID 485577333, index ID 0, partition ID 72057594038845456, 
alloc unit ID 72057594042515968 (type "In-row data").
Column "ProductPrice" value is out of range for data type "decimal". Update column to a legal value.
There are 45892 rows in 1247 pages for object "Products".
CHECKDB found 0 allocation errors and 1 consistency errors in table 'Products' (object ID 485577333).
CHECKDB found 0 allocation errors and 1 consistency errors in database 'InventoryDatabase'.

4.2 CHECKDB exekuzioa bertan behera uzten da

CHECKDB-k hainbat arrazoirengatik exekuzioan zehar eteten badu, errore-mezu bat jakinaraziko du eta errore-erregistro bat gehituko du beheko egoera-kodearekin:

Estatuko Deskribapena
0 8930 zenbakiko errorea sortu da. Honek metadatuen hondatzea adierazten du, eta horrek DBCC komandoa amaitu du.
1 8967 zenbakiko errorea sortu da. Barne DBCC errore bat egon da.
2 Larrialdi moduko datu-basearen konponketan akats bat gertatu da.
3 Honek metadatuetan DBCC komandoa amaitu dela adierazten du.
4 Baieztapen edo sarbide urraketa bat detektatu da.
5 Errore ezezagun bat gertatu da, eta horrek DBCC komandoa amaitu du.

Errore-mezuaren adibidea:

Failed:(-1073548784) Executing the query "DBCC CHECKDB('InventoryDB') WITH NO_INFOMSGS" failed with the following error: "There is insufficient system memory to run this query.Check terminated. A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent. Check previous errors.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

or

2024-11-18 09:52:41.38 spid35 I/O error (bad page ID) detected during read at offset 0x00000024886000 in file 'C:\Data\MSSQL\DATA\SalesDatabase.mdf'.

Erroreen erregistroaren adibidea:

11/15/2024 09:23:17,spid52,Unknown,DBCC CHECKDB (SalesDatabase) WITH all_errormsgs no_infomsgs executed by CORP\dbadmin terminated abnormally due to error state 3. Elapsed time: 1 hours 32 minutes 18 seconds.

Kasu horretan, aukera aurreratu alternatiboak probatu ditzakezu, hala nola DataNumen SQL Recovery zure datu-baseko hondatzea konpontzeko.

5. Ustelkeria-erroreak konpontzea

5.1 Babeskopia eta leheneratzea: konponbiderik seguruena

DBCC CHECKDB-k ustelkeria-erroreak identifikatzen dituenean, babeskopia garbi batetik leheneratzea da modurik seguruena eta eraginkorragoa.ost irtenbide fidagarria. Ikuspegi honek datuen osotasuna bermatzen du, azpiko ustelkeriaren arrazoiak ezabatuz. Berreskuratu aurretik, egiaztatu babeskopiaren osotasuna erabiliz EGIAZTAPEN BAKARRIK BERRESKURATU komandoak, eta kontuan hartu unean uneko berreskuratze aukerak datuen galera minimizatzeko. Dokumentatu ustelkeriaren xehetasunak erroko kausaren analisia egiteko, hardware arazoek edo software akatsek arreta gehigarria behar izan baitezakete berriro gerta ez daitezen.

5.2 Orrialde mailako ustelkeriaren irtenbideak

Datu zati txikiei eragiten dien orrialde-ustelkeria isolatuarentzat, SQL Server Enterprise Edition-ek orrialdeak leheneratzeko gaitasunak eskaintzen ditu, datu-basearen leheneratze osoa egin gabe kaltetutako orrialde espezifikoak konpontzen dituztenak. Teknika aurreratu honek berreskuratze-eredu osoa eta uneko erregistro-kopiak behar ditu.

Orrialdea leheneratzeko prozesua, urratsez urrats:

  1. Identifikatu hondatutako orrialdea CHECKDB errore-mezutik (adibidez, 1:256 orrialdea)
  2. Egin uneko erregistroaren babeskopia bat azken transakzioak jasotzeko:
BACKUP LOG YourDatabase TO DISK = 'C:\Backups\YourDB_Log.trn'
  1. Leheneratu orri hondatua m-tikost azken babeskopia osoa:
RESTORE DATABASE YourDatabase PAGE = '1:256' 
FROM DISK = 'C:\Backups\YourDB_Full.bak'
  1. Aplikatu babeskopia diferentziala (eskuragarri badago):
RESTORE DATABASE YourDatabase PAGE = '1:256' 
FROM DISK = 'C:\Backups\YourDB_Diff.bak'
  1. Aplikatu erregistro guztien babeskopiak sekuentzian, sortu berri dena barne:
RESTORE LOG YourDatabase FROM DISK = 'C:\Backups\YourDB_Log1.trn'
RESTORE LOG YourDatabase FROM DISK = 'C:\Backups\YourDB_Log2.trn'
-- Continue for all log backups in order
RESTORE LOG YourDatabase FROM DISK = 'C:\Backups\YourDB_Log.trn'
  1. Egin azken erregistroaren babeskopia eta leheneratu orrialdea unean unekoa jartzeko:
BACKUP LOG YourDatabase TO DISK = 'C:\Backups\YourDB_Final.trn'
RESTORE LOG YourDatabase FROM DISK = 'C:\Backups\YourDB_Final.trn'

Datu ez-kritikoetarako alternatiba: Hondatzeak datu ez-kritikoei eragiten badie, kaltetu gabeko errenkadak taula berrietara esportatu ditzakezu hondatutako egiturak berreraiki aurretik:

-- Export good data to a new table
SELECT * INTO YourTable_Backup 
FROM YourTable 
WHERE NOT EXISTS (SELECT 1 FROM corrupt_page_list WHERE page_id = target_page)

-- Drop and recreate the corrupted table
DROP TABLE YourTable
-- Recreate table structure and reload clean data

5.3 Indizearen hondamendiaren konponketa azkarrak

Indizeen hondatzeak askotan ondo erantzuten dio azpiko taula-datuei eragin gabe indizeen egiturak birsortzen dituzten berreraikitze-eragiketei:

ALTER INDEX ALL ON YourTable REBUILD

Ikuspegi honek bereziki ondo funtzionatzen du indize multzokatu gabeko hondamendietarako, berreraikitzeak indize orriak iturri-taulako datuetatik birsortzen baititu, hondamendia eraginkortasunez ezabatuz jatorrizko informazio guztia mantenduz.

6. Erabili REPAIR_REBUILD eta REPAIR_ALLOW_DATA_LOSS

Aurreko metodo guztiek huts egiten badute edo bideragarriak ez badira, REPAIR_REBUILD eta REPAIR_ALLOW_DATA_LOSS aukerak erabil ditzakezu datu-basea konpontzeko.

6.1 KONPONKETA_BERRERAIKIA (Aukera seguruagoa):

  • Erabili dagoen: Indizearen hondatzea eta esleipen-errore txikiak
  • Datuen segurtasuna: Datuak ezabatu gabe ustelkeria konpontzen saiatzen da
  • Arrisku maila: Baxua – ez da daturik galtzea espero
  • Egoera tipikoak: Indize multzokatu gabearen hondatzea, metadatuen arazo txikiak
  • Komandoaren adibidea: DBCC CHECKDB('YourDB', REPAIR_REBUILD)

6.2 KONPONKETA_DATUEN_GALERA (Azken aukera):

  • Erabili dagoen: Ustelkeria larria babeskopiak erabilgarri ez daudenean
  • Datuen segurtasuna: Datu-basearen funtzionaltasuna berreskuratzeko datu hondatuak ezaba ditzake
  • Arrisku maila: Altua – datuen galera iraunkorra posiblea
  • Egoera tipikoak: Orrialdearen hondatzea, sistemaren taularen kaltea, esleipen-katearen akatsak
  • Komandoaren adibidea: DBCC CHECKDB('YourDB', REPAIR_ALLOW_DATA_LOSS)

6.3 Aukera hauetarako jardunbide egokiak:

  • Beti probatu datu-basearen kopiak konpontzeko eragiketak, ahal den guztietan
  • Beti egin babeskopia aukera hauek exekutatu aurretik
  • Dokumentatu aldaketa guztiak betetze eta konponketa helburuetarako
  • Ezarri datu-basea erabiltzaile bakarreko moduan konponketa eragiketak egin aurretik

Normalean, saiatu beharko genuke KONPONDU_BERRERAIKIA aukera lehenengo. Huts egiten badu, saiatu KONPONDU_ALOW_DATUAK_GALERA aukera.

6.4 KONPONKETA_DATUEN_GALERA Emaitzak

6.4.1 Konponketa arrakastatsua da datuen galerarekin

Batzuetan KONPONDU_ALOW_DATUAK_GALERA aukerak arrakasta izango du, baina datu batzuk falta diraost konponketaren ondoren.

Jarraian, mezu batzuen adibidea:

CHECKDB found 0 allocation errors and 103 consistency errors in database ‘SalesDatabase’.
CHECKDB fixed 0 allocation errors and 103 consistency errors in database ‘SalesDatabase’.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Msg 8909, Level 16, State 1, Line 8
Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 45035996309880832 (type Unknown), page ID (1:553) contains an incorrect page ID in its page header. The PageId in the page header = (0:0).
The error has been repaired.
Msg 8939, Level 16, State 98, Line 8
Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 111464090777419776 (type Unknown), page (0:0). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 2057 and -1.
Could not repair this error.

Hau DBCC CHECKDB-k datu-basea konpontzen duelako da, erregistro kaltetu batzuk alde batera utziz, baina, egia esan, most horietako batzuk oraindik berreskura daitezke bidez DataNumen SQL Recovery.

Adibide fitxategiak:

SQL Server bertsioa MDF fitxategi hondatua MDF fitxategiak konpondu du DataNumen SQL Recovery
SQL Server 2014 Errorea10_1.mdf (8909 mezua, ondoren 8939 mezua) (600 erregistro l)ost KONPONKETA_DATUEN_GALERArekin) Errorea10_1_fixed.mdf (Ez dago erregistrorik lost)
SQL Server 2014 Errorea10_2.mdf (8909 mezua, ondoren 8939 mezua) (6000 erregistro (% 50))ost KONPONKETA_DATUEN_GALERArekin) Errorea10_2_fixed.mdf (100 erregistro bakarrik)ost)
SQL Server 2014 Error7.mdf (100 erregistro lost KONPONKETA_DATUEN_GALERArekin) Errorea7_fixed.mdf (Erregistro bakarra lost)

6.4.2 Konponketa huts egiten du – Kontuan hartu irtenbide profesionala

If KONPONDU_ALOW_DATUAK_GALERA huts egiten badu, errore-mezu bat edo gehiago erakutsiko ditu.

Jarraian adibide batzuk daude:

DBCC results for ‘MyDatabase’.
CHECKDB found 0 allocation errors and 0 consistency errors in database ‘MyDatabase’.
Msg 824, Level 24, State 2, Line 8
SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xea8a9a2f; actual: 0x37adbff8). It occurred during a read of page (1:28) in database ID 39 at offset 0x00000000038000 in file ‘MyDatabase.mdf’. Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Msg 7909, Level 20, State 1, Line 8
The emergency-mode repair failed.You must restore from backup.
Msg 8992, Level 16, State 1, Line 8
Check Catalog Msg 3852, State 1: Row (object_id=69) in sys.objects (type=S ) does not have a matching row (object_id=69,column_id=1) in sys.columns.
Msg 8945, Level 16, State 1, Line 8
Table error: Object ID 41, index ID 1 will be rebuilt.
Could not repair this error.
Msg 2510, Level 16, State 17, Line 8
DBCC checkdb error: This system table index cannot be recreated.
Repair: The Nonclustered index successfully rebuilt for the object “sysidxstats” in database “MyDatabase”.
Msg 8921, Level 16, State 1, Line 8
Check terminated. A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent. Check previous errors.
Msg 8998, Level 16, State 2, Line 8
Page errors on the GAM, SGAM, or PFS pages prevent allocation integrity checks in database ID 39 pages from (1:0) to (1:8087). See other errors for cause.
CHECKDB found 1 allocation errors and 0 consistency errors not associated with any single object.
Msg 2575, Level 16, State 1, Line 8
The Index Allocation Map (IAM) page (1:157) is pointed to by the next pointer of IAM page (0:0) in object ID 3, index ID 1, partition ID 196608, alloc unit ID 196608 (type In-row data), but it was not detected in the scan.
Could not repair this error.
CHECKDB found 1 allocation errors and 0 consistency errors in table ‘sys.sysrscols’ (object ID 3).
Msg 8948, Level 16, State 3, Line 8
Database error: Page (1:295) is marked with the wrong type in PFS page (1:1). PFS status 0x70 expected 0x60.
The error has been repaired.
Msg 8905, Level 16, State 1, Line 8
Extent (1:296) in database ID 39 is marked allocated in the GAM, but no SGAM or IAM has allocated it.
The error has been repaired.
Msg 5028, Level 16, State 4, Line 4
The system could not activate enough of the database to rebuild the log.
Msg 5125, Level 24, State 2, Line 2
File ‘C:Program FilesMicrosoft SQL ServerMSSQL12.SQL2014MSSQLDATASalesDatabase.mdf’ appears to have been truncated by the operating system. Expected size is 5120 KB but actual size is 5112 KB.
Msg 3414, Level 21, State 1, Line 2
An error occurred during recovery, preventing the database ‘SalesDatabase’ (39:0) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.
Msg 3313, Level 21, State 1, Line 2
During redoing of a logged operation in database ‘SalesDatabase’, an error occurred at log record ID (135:752:2). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database.

Egoera hauetan, irtenbide profesional bat erabili behar duzu, hala nola DataNumen SQL Recovery zure datu-basea konpontzeko.

Adibide fitxategiak

SQL Server bertsioa MDF fitxategi hondatua MDF fitxategiak konpondu du DataNumen SQL Recovery
SQL Server 2014 Errorea1_3.mdf (824. mezu bakarra) Errorea1_3_fixed.mdf
SQL Server 2014 Errorea1_1.mdf (824 mezu-errore jarraituak) Errorea_1_konpondu.mdf
SQL Server 2014 Errorea1_2.mdf ((824 mezua, ondoren 7909 mezua) Errorea1_2_fixed.mdf
SQL Server 2014 Errorea4_1.mdf (8992 mezua, ondoren 3852 mezua) Errorea4_1_fixed.mdf
SQL Server 2014 Errorea4_2.mdf (8992 mezua, ondoren 3852 mezua) Errorea4_2_fixed.mdf
SQL Server 2014 Errorea5.mdf (8945. mezua) Errorea5_fixed.mdf
SQL Server 2014 Errorea6.mdf (2510. mezua) Errorea6_fixed.mdf
SQL Server 2014 Errorea2.mdf (2575. mezua) Errorea2_fixed.mdf
SQL Server 2014 Errorea11.mdf (8905. mezua) Errorea11_fixed.mdf
SQL Server 2014 Errorea3.mdf (5028. mezua) Errorea3_fixed.mdf
SQL Server 2014 Error8.mdf (5125. mezua) Error8_konpondu.mdf
SQL Server 2014 Errorea9.mdf (3313. mezua) Errorea9_fixed.mdf

7. Praktika Egokiak

7.1 CHECKDB eragiketa erregularrak programatzea

Ezarri DBCC CHECKDB exekuzio asterokoa ekoizpen-datu-base kritikoetarako, transakzio handiko sistemetarako eguneroko egiaztapenekin. Antolatu eragiketak erabilera gutxiko aldietan errendimenduaren eragina minimizatzeko, eta kontuan hartu egiaztapen osoen eta PHYSICAL_ONLY aukeren artean txandakatzea datu-basearen tamainaren eta mantentze-leihoen arabera. Programazio automatizatua honen bidez: SQL Server Agenteak exekuzio koherentea bermatzen du, monitorizazio eta alerta gaitasun zentralizatuak eskainiz.

7.2 Errendimenduaren Eraginaren Kudeaketa

DBCC CHECKDB eragiketek sistemaren baliabide asko kontsumitzen dituzte, eta horrek erabiltzaileen aldibereko jardueran eragina izan dezake. Kontrolatu CPUaren erabilera, memoriaren kontsumoa eta diskoaren sarrera/irteera egiaztapenetan zehar, errendimenduaren eragin-ereduak ulertzeko. Kontuan hartu NOINDEX aukerak erabiltzea ohiko egiaztapenetarako, balidazio osoa hileroko mantentze-leihoetarako gordez. Inplementatu kontsulten denbora-muga luzapenak eta erabiltzaileen komunikazio estrategiak osotasun-egiaztapen aldietan itxaropenak kudeatzeko.

7.3 Mantentze-leihoaren plangintza

Koordinatu DBCC CHECKDB programazioa beste mantentze-jarduerekin, hala nola babeskopien eragiketekin, indizeen berreraikuntzarekin eta estatistiken eguneratzeekin. Saihestu baliabide asko behar dituzten eragiketa gainjartzeak, errendimenduaren hondatzea edo denbora-muga arazoak sor ditzaketenak. Planifikatu mantentze-leihoak datu-basearen tamainaren hazkunde-proiekzioetan oinarrituta, datu-bolumena handitzen den heinean osotasun-egiaztapen osoa egiteko denbora nahikoa bermatuz.

7.4 Jarraipen eta alerta automatizatuak

Ezarri SQL Server DBCC CHECKDB-k ustelkeria identifikatzen duenean, agenteak abisatzen du administratzaileei berehala jakinarazteko. Inplementatu osotasun-egiaztapenen emaitzak atera eta sailkatzen dituzten erregistro-analisi irtenbideak, joeren azterketa eta arazoen identifikazio proaktiboa ahalbidetuz. Sortu eskalatze-prozedurak, erantzun-denborak eta ustelkeriaren larritasun-maila desberdinetarako arduradunak definitzen dituztenak.

8. DBCC EGIAZTAPEN TAULA: Alternatiba Arina

8.1 Noiz erabili behar da CHECKTABLE CHECKDB-ren ordez

DBCC CHECKTABLE-k taula bakoitzaren osotasun-egiaztapen zehatza eskaintzen du, eta aproposa da honetarako: tarDatu-baseko objektu espezifikoen arazoak konpontzea eta mantentzea lortu da. Erabili CHECKTABLE taula jakin batzuekin errendimendu arazoak ikertzean, datu-baseen egiaztapen osoen artean negozio-taula kritikoak balioztatzean edo denbora-mugak direla eta, datu-basearen balidazio osoa eragozten da. Ikuspegi hau bereziki baliotsua da datu-base handietan, non CHECKDB eragiketa osoek mantentze-leiho erabilgarriak gainditzen dituzten.

8.2 DBCC CHECKTABLE sintaxia eta adibideak

Oinarrizko CHECKTABLE komandoa tartaula espezifikoak lortzen ditu:

DBCC CHECKTABLE('YourTable')

CHECKDB bezala, CHECKTABLE-k hainbat aukera onartzen ditu, besteak beste, NOINDEX errendimenduaren optimizaziorako eta hondamendia konpontzeko konponketa-parametroak. Eskema-izenak ere zehaztu ditzakezu taula zehatz-mehatz identifikatzeko:

DBCC CHECKTABLE('SchemaName.TableName', NOINDEX)

helburua tarGeted ikuspegiak osotasun granularra egiaztatzea ahalbidetzen du, sistemaren errendimendua lanorduetan mantenduz.

8.3 Datu-base handien errendimendu-abantailak

CHECKTABLE eragiketak datu-baseen egiaztapen osoak baino askoz azkarrago burutzen dira, taula kritikoen osotasun-egiaztapen maizago bat ahalbidetuz. Ikuspegi honek negozio-taula funtsezkoen eguneroko balidazioa ahalbidetzen du, CHECKDB eragiketa osoak astero edo hileroko ordutegietarako gordez. Baliabideen kontsumo murriztuak CHECKTABLE egokia egiten du ekoizpen-ingurunean exekutatzeko, erabiltzaileen eragin minimoarekin.

9. CHECKDB-k huts egiten duenean

DBCC CHECKDB-k hainbat egoeratan huts egingo du, besteak beste:

Egoera hauetan, datu-baseko akatsak konpontzeko tresna profesionalago bat behar dugu.

9.1 Sarrera DataNumen SQL Recovery

DataNumen SQL Recovery gaitasun aurreratuagoak eskaintzen ditu:

  • Berreskuratze tasa onena industria.
  • Berreskuratu datu-baseko fitxategiak larriki hondatuta.
  • Berreskuratu datu-baseko objektu guztiak, besteak beste, taulak, indizeak, bistak, abiarazleak, arauak eta lehenetsiak.
  • Berreskuratu gordetako prozedurak, funtzio eskalarrak, lerroko taula-baliodun funtzioak eta esaldi anitzeko taula-baliodun funtzioak.
  • Berreskuratu betiko ezabatutako erregistroak.
  • Deszifratu objektu enkriptatuak hemen SQL Server base.
  • Konpondu MDF fitxategiak multzoka.
  • Konponketa aukera integralak.
  • Erregistro eta txosten aurreratuak.
  • Guztientzako laguntza SQL Server bertsioak.
  • Laguntza teknikoaren erabilgarritasuna
  • Aldizkako eguneratzeak eta hobekuntzak

9.2 Arrakasta-tasaren konparaketa

Berreskuratzeko arrakasta-tasak nabarmen desberdinak dira:

  • DBCC EGIAZTAPEN DB eta EGIAZTAPEN TABLE: 1.27% batez besteko berreskuratze tasa
  • DataNumen: 92.6% berreskuratze tasa

Jarraian, lehiakortasunaren konparazio osoa dago:

Berreskuratze-tasen konparazio-taula DataNumen SQL Recovery eta beste lehiakide batzuk, besteak beste, DBCC CHECKDB eta CHECKTABLE.

9.3 Ustelkeria larritik berreskuratzea

Gaitasun aurreratuak kasu larrietarako:

  • Fisikoki kaltetutako biltegiratzetik berreskuratzea
  • Formateatutako unitateetatik edo huts egindako sistemetatik berreskuratzea
  • Berreskuratu diskoko irudietatik, babeskopia fitxategietatik, makina birtualaren disko fitxategietatik, tempotikrary fitxategiak, etab.

9.4 Noiz kontuan hartu behar dira irtenbide profesionalak

  • Ez dago babeskopiarik azkenaldian
  • DBCC CHECKDB-k huts egiten du
  • Ustelkeria larriaren eszenatokiak
  • Negozio-datu kritikoekin lan egitea
  • Denbora kritikoa denean
  • Gehieneko berreskurapena ezinbestekoa denean

10. Ohiko galderak

10.1 Oinarrizko erabilerari buruzko galderak

G: Zenbatetan exekutatu behar dut DBCC CHECKDB?

A: Ekoizpen-datu-base kritikoetarako, exekutatu CHECKDB astero. Transakzio askoko sistemetarako, kontuan hartu eguneroko egiaztapenak PHYSICAL_ONLY aukera erabiliz, egiaztapen osoak astero eginez. Garapen-datu-baseak hilero egiazta daitezke.

G: Exekutatu al dezaket DBCC CHECKDB ekoizpen-datu-base batean?

A: Bai, DBCC CHECKDB lineako datu-baseetan exekutatu daiteke erabiltzaileak blokeatu gabe. Hala ere, baliabide asko kontsumitzen ditu, beraz, programatu jarduera gutxiko aldietan eta kontrolatu sistemaren errendimendua.

G: Zein da CHECKDB eta CHECKTABLE arteko aldea?

A: CHECKDB-k datu-base osoa aztertzen du, CHECKTABLE-k, berriz, taula indibidualetan zentratzen da. Erabili CHECKTABLE honetarako tarArazoak konpontzea edo datu-base osoa eskaneatu gabe taula zehatzak egiaztatu behar dituzunean.

10.2 Errendimenduari eta baliabideei buruzko galderak

G: Zergatik behar du hainbeste denbora DBCC CHECKDB-k nire datu-base handian?

A: CHECKDB-ren iraupena datu-basearen tamainaren, hardwarearen errendimenduaren eta erabilitako aukeren araberakoa da. Erabili PHYSICAL_ONLY egiaztapen azkarragoak egiteko, edo NOINDEX indize ez-klusterizatuak saltatzeko. Kontuan hartu mantentze-leihoetan baliabide dedikatuekin exekutatzea.

G: Zenbat tempdb espazio behar du CHECKDB-k?

A: Oro har, zure datu-basearen tamainaren % 10-15 esleitu tempdb-rako CHECKDB eragiketetan. Erabili ESTIMATEONLY aukera kalkulu zehatzak lortzeko: DBCC CHECKDB('YourDB') WITH ESTIMATEONLY

G: Exekutatzen ari den CHECKDB eragiketa bat bertan behera utzi al dezaket?

A: Bai, CHECKDB bertan behera utzi dezakezu saio IDan KILL komandoa erabiliz. Hala ere, bertan behera uzteak ez du datu-basearen osotasunari buruzko informaziorik ematen, eta geroago berriro exekutatu beharko duzu.

10.3 Erroreak kudeatzeko galderak

G: CHECKDB-k erroreak aurkitu ditu – izutu egin behar al naiz?

A: Ez izutu, baina azkar jokatu. Lehenik eta behin, zehaztu ea CHECKDB behar bezala burutu den baina hondatuta dagoen, edo CHECKDB bera huts egin duen exekutatu den. Egiaztatu erroreek klusterizatu gabeko indizeei (kritikoagoak ez direnak) edo taulako datuei (larriagoak direnak) bakarrik eragiten dieten.

G: Noiz erabili behar dut REPAIR_ALLOW_DATA_LOSS?

A: Azken aukera gisa bakarrik, babeskopia erabilgarririk ez duzunean eta datuen galera onargarria denean datu-basearen galera osoarekin alderatuta. Saiatu beti lehenik babeskopiatik leheneratzen, konponketa-eragiketek datuen galera iraunkorra eragin baitezakete.

G: Zer esan nahi du "datu-baseko koherentzia-erroreak" eta "esleipen-erroreak" arteko diferentziak?

A: Esleipen-erroreek eragina dute SQL Server diskoaren espazioaren erabilera kontrolatzen du, koherentzia erroreek datuekin edo indize egiturekin arazoak adierazten dituzten bitartean. Bietako batek arreta behar du, baina koherentzia erroreek normalean datuen irisgarritasunari eragiten diote zuzenean.

10.4 Babeskopiak eta Berreskuratzeari buruzko Galderak

G: CHECKDB exekutatu beharko nuke nire babeskopietan?

A: Noski! Exekutatu CHECKDB babeskopiak proba-zerbitzarietara leheneratu ondoren. Horrek babeskopiaren osotasuna egiaztatzen du eta hondatzetik berreskuratu ahal izango duzula ziurtatzen du. Automatizatu prozesu hau ahal bada.

G: Nire babeskopia ere hondatuta dago – orain zer?

A: Saiatu babeskopia zaharragoak egiten garbi bat aurkitu arte. Babeskopia garbirik ez badago, kontuan hartu berreskuratze-irtenbide profesionalak, hala nola DataNumen SQL RecoveryDokumentatu ustelkeriaren kronologia etorkizunean gerta ez daitezen.

G: Orrialdeen leheneratzeak hondatzea konpondu al dezake datu-base osoa berreskuratu gabe?

A: Bai, baina bakarrik barruan SQL Server Enpresa edizioa berreskuratze-eredu osoarekin eta uneko erregistro-kopiekin. Orrialdeen leheneratzeak orrialde-ustelkeria isolatuetarako balio du, baina prozedura egokiak jarraituz kontu handiz exekutatu behar da.

10.5 Arazoak konpontzeko galderak

G: CHECKDB-k huts egiten ari da "lekurik gabe" erroreekin – zer egin dezaket?

A: Askatu tempdb-ko espazioa, mugitu tempdb biltegiratze azkarrago batera edo erabili TABLOCK aukera tempdb-ren erabilera murrizteko. Kontuan hartu CHECKDB exekutatzea NOINDEX edo PHYSICAL_ONLY-rekin baliabideen beharrak murrizteko.

G: Nola identifikatu dezaket zein taulak duen hondatuta CHECKDB irteeratik?

A: Bilatu errore-mezuetan "objektuaren IDa" zenbakiak, eta erabili: SELECT OBJECT_NAME(object_id) taulen izenak aurkitzeko. Errore-mezuek orrialde eta zirrikitu zenbakiak ere badituzte kokapena zehatz-mehatz identifikatzeko.

G: Hardware arazoek eragin al dezakete CHECKDB-k positibo faltsuak ematea?

A: Bai, hardwarearen akatsak (batez ere biltegiratzeak) CHECKDB exekuzioen artean agertzen eta desagertzen den etengabeko hondatzea eragin dezake. Erroreak koherenteak ez badira, aztertu zure S/I azpisistema eta egin hainbat egiaztapen ereduak berresteko.

10.6 Konfigurazio Aurreratuari buruzko Galderak

G: Zein trazadura-banderak hobetu dezakete CHECKDBren errendimendua?

A: 2562 trazadura-banderak errendimendua hobetu dezake CHECKDB multzo bakar gisa exekutatuz. 2549 trazadura-banderak datu-baseko fitxategiak disko bereizietan daudenean laguntzen du. Erabili hauek kontu handiz eta probatu lehenik ekoizpenetik kanpo.

G: Nola automatizatu dezaket CHECKDB monitorizazioa eta alertak?

A: Erabili SQL Server 8930, 8939 eta beste errore zenbakietarako agenteen alertak. Inplementatu erregistroen azterketa CHECKDB emaitzak ateratzeko, eta sortu jakinarazpenak edozein ustelkeria aurkikuntzarako. Kontuan hartu mantentze-soluzioen esparruak erabiltzea, hala nola Ola Hallengrenen script-ak.

G: EXTENDED_LOGICAL_CHECKS aukera erabili beharko nuke?

A: Logika-ustelkeria konplexua susmatzen baduzu eta errendimendu-gastu egokia baduzu bakarrik. Aukera honek indexatutako bistetan, XML indizeetan eta indize espazialetan egiaztapen gehigarriak egiten ditu, baina exekuzio-denbora nabarmen handitzen du.

11. Ondorioa

11.1 Gako puntuen laburpena

11.1.1 DBCC CHECKDB komando funtsezkoen laburpena

Menderatu DBCC CHECKDB sintaxia oinarrizkoa datu-baseen egiaztapen integrala egiteko, erabili NOINDEX eta PHYSICAL_ONLY aukerak errendimenduaren optimizaziorako eta ulertu CHECKTABLE. tarLortutako taularen egiaztapena. Oinarrizko komando hauek datu-baseen mantentze proaktiboaren oinarria osatzen dute, ustelkeria goiz detektatzea eta osotasun sistematikoaren monitorizazioa ahalbidetuz.

11.1.2 Jardunbide egokien abisua

Beti mantendu babeskopiak eguneratuta osotasun-egiaztapenak egin aurretik, programatu CHECKDB eragiketa erregularrak datu-basearen kritikotasunaren arabera eta ezarri monitorizazio automatizatua berehalako ustelkeria-alertak jasotzeko. Gogoratu monitorizazio erregularraren bidezko prebentzioak erreakzio-ikuspegiak gainditzen dituela, eta berreskuratze-irtenbide profesionalek babeskopia-aukera baliotsuak eskaintzen dituztela tresna estandarrak nahikoak ez direnean.

11.2 Noiz erabili DBCC CHECKDB vs. Soluzio Aurreratuak

Erabili DBCC CHECKDB osotasun-monitorizazio arrunterako eta ustelkeria txikien ebazpenerako, berreskuratze-tresna profesionalak gordez konponketa-gaitasun integratuetatik haratago dauden ustelkeria larrietarako. Erabaki-esparruak kontuan hartu beharko lituzke babeskopien erabilgarritasuna, datuen kritikotasuna, denbora-mugak eta ustelkeriaren larritasuna. Datu-baseen administratzaile arrakastatsuek CHECKDB monitorizazio erregularra konbinatzen dute babeskopia-estrategia integralekin eta berreskuratze-aukera aurreratuen ezagutzarekin, ikuspegi estandarrak nahikoak ez direnean.

12. Erreferentziak

  1. Microsoft Learn. “DBCC CHECKDB (Transact-SQL).” SQL Server DokumentazioMicrosoft Korporazioa.
    https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver17
  2. Microsoft Learn. "DBCC CHECKDB-k jakinarazitako datu-basearen koherentzia-erroreak konpontzea." SQL Server DokumentazioMicrosoft Korporazioa.
    https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/database-file-operations/troubleshoot-dbcc-checkdb-errors