Amikor az SQL Server adatokat ír a meghajtókra, azt feltételezi, hogy minden rendben van, amíg vissza nem kell olvasnia az adatokat.
A tároló sérülése esetén a tároló sajnos nem olyan kedves, hogy figyelmeztesse az SQL Servert. És néha az SQL Server még saját magát is megrongálja.
Időnként ellenőriznünk kell, hogy a lemezen lévő adatoknak még mindig van-e értelme, és itt jön a képbe a DBCC CHECKDB. Mind a kiosztási hibákat, mind a konzisztenciahibákat ellenőrzi. Ezenkívül, ha vannak problémák, a hibaüzenetekben visszajönnek a hibák helyére vonatkozó információk, a hiba súlyossága, valamint a javasolt javítási lehetőség.
Elkerülhetetlen, hogy rendszeresen futtassuk a CHECKDB-t, hogy megtaláljuk a hibákat, ha vannak, mert ha van korrupció, akkor azt ki kell javítanunk, mielőtt az utolsó jó biztonsági mentések eltűnnek.
A probléma megtalálásához minden egyes adatbázist ellenőrizzük, hogy a DBCC CHECKDB az elmúlt két hétben sikeresen elvégezte-e az ellenőrzést.
Nem hiszi el?
“De én állandóan futtatom a CHECKDB-t”, mondhatja – nos, nézzük meg:
1
|
DBCC DBINFO(‘StackOverflow’) WITH TABLERESULTS
|
Ez az. De a kimenet egy rémálom. Körülbelül 80 sornyi olyan dolog, ami valószínűleg soha nem fog érdekelni. Az 50. sor körül van az, amit keresel.
![](https://www.brentozar.com/wp-content/uploads/2015/07/2015-07-22_11-41-00-600x80.jpg)
Hi, nonszensz vagyok.
És valószínűleg ezt fogod látni! Egy 1900-01-01-es dátumot stb. Ez azt jelenti, hogy soha. Ha lefuttatod a DBCC CHECKDB-t az adatbázison, talán így:
1
|
DBCC CHECKDB(‘StackOverflow’) WITH NO_INFOMSGS, ALL_ERRORMSGS
|
Majd futtassuk újra a DBCC DBINFO parancsot, a dátumunk most már aktuálisra frissült:
![](https://www.brentozar.com/wp-content/uploads/2015/07/2015-07-22_11-49-18-600x86.jpg)
Nézd, milyen jól szórakozunk
Ha a dátum nem frissül, az két dolog egyikét jelenti:
A probléma megoldása
Döntse el, hogy a beépített karbantartási terveket vagy egy ingyenes eszközt, például Ola Hallengren ingyenes CHECKDB szkriptjeit szeretné-e használni. Néhány megfontolás:
- A karbantartási terveknek grafikus felületük van, ha nem ismeri a T-SQL-t.
- Ola Hallengren ingyenes szkriptjei gondoskodnak a finomhangolt beállításokról, például az adat_tisztasági ellenőrzések automatikus futtatásáról (ami jó dolog).
Hogyan állítsa be a rendszeres karbantartást a sérülések ellenőrzésére
1. lehetőség: Karbantartási terv használata a DBCC CHECKDB futtatásához
Ha karbantartási terveket használ, akkor a karbantartási terveket az SQL Server Management Studio-ban a Management, Maintenance Plans menüpontban szerkesztheti. Kiszolgálója több karbantartási tervvel is rendelkezhet, amelyek különböző típusú adatbázisokhoz futtatják a CHECKDB-t, például egy a rendszeradatbázisokhoz és egy a felhasználói adatbázisokhoz.
Tágítsa ki a Management csomópontot az SSMS-ben, kattintson a jobb gombbal a Maintenance Plans (Karbantartási tervek) elemre, és válassza az New Plan (Új terv) lehetőséget.
Az eszköztár ablakból, amely néha balra elrejtőzik, húzza át az Adatbázis integritásának ellenőrzése feladatot a Karbantartási terv lapra.
Az Adatbázis integritásának ellenőrzése feladat mezőre duplán kattintva a Karbantartási terv lapon kiválaszthatja, hogy mely adatbázisokat szeretné ellenőrizni a folyamat során.
Ezután már csak az ütemezés van hátra, ami ugyanúgy történik, mint egy ügynöki feladat ütemezése.
A karbantartási terv mentése és bezárása után mindenképpen keresse meg a kapcsolódó feladatot az SQL Server Agentben, és állítsa be az Értesítési tulajdonságokat, hogy egy operátor értesüljön a feladat sikertelenségéről.
2. lehetőség: Az SQL Agent munkák beállítása a DBCC CHECKDB futtatására Ola Hallengren ingyenes szkriptjeinek használatával
Ha először hajt végre integritásellenőrzést, fontolja meg Ola Hallengren ingyenes karbantartási szkriptjeinek használatát. Ezek nem olyan egyszerűek, mint a karbantartási tervek, de sokkal rugalmasabbak. Azt is tartalmazzák, hogy nagy adatbázisok esetén a DBCC műveleteket kisebb darabokra lehet bontani. Nagyon nagy adatbázisok esetén a CHECKDB jelentős mennyiségű időt és erőforrást vehet igénybe – a WITH PHYSICAL_ONLY opció gyorsabb, de kihagyja a logikai ellenőrzéseket.
Amikor az ügynöki feladatok már készen vannak, ütemezheti őket ugyanolyan egyszerűen, mint a karbantartási terveket, vagy finomhangolhatja őket az itt dokumentált további opciókkal.