DBCC CHECKDB ikke kørt for nylig

Når SQL Server skriver data til dine drev, går den ud fra, at alt er i orden, indtil den skal læse dataene tilbage igen.

I tilfælde af beskadigelse af lageret, er lageret desværre ikke så venligt at advare SQL Server. Og nogle gange har SQL Server endda været kendt for at korrupte sig selv.

Vi er nødt til med jævne mellemrum at kontrollere, at dataene på disken stadig giver mening, og det er her DBCC CHECKDB kommer ind i billedet. Den kontrollerer både for allokeringsfejl og konsistensfejl. Hvis der er problemer, vil fejlmeddelelserne desuden komme tilbage med oplysninger om, hvor fejlene findes, fejlens alvorlighed samt den foreslåede reparationsmulighed.

Det er vigtigt at køre CHECKDB regelmæssigt for at finde fejl, hvis de findes, for hvis der er korruption, skal vi rette det, før vores sidste gode sikkerhedskopier forsvinder.

For at finde problemet kontrollerer vi hver database for at sikre os, at DBCC CHECKDB har gennemført en vellykket kontrol inden for de sidste to uger.

Tro ikke på det?

“Men jeg kører CHECKDB hele tiden,” siger du måske – lad os finde ud af det:

Transact-SQL

1
DBCC DBINFO(‘StackOverflow’) WITH TABLERESULTS

Sådan er det. Men outputtet er et mareridt. Det er omkring 80 linjer med ting, som du sandsynligvis aldrig vil interessere dig for. Omkring linje 50 er det, du leder efter.

Hej, jeg er nonsens.

Og det her er nok det, du vil se! En dato på 1900-01-01-01 osv. Det betyder aldrig. Hvis du kører DBCC CHECKDB på databasen, måske sådan her:

Transact-SQL

1
DBCC CHECKDB(‘StackOverflow’) WITH NO_INFOMSGS, ALL_ERRORMSGS

Og kør derefter DBCC DBINFO-kommandoen igen, vores dato er nu opdateret til aktuel:

Se hvor meget sjov vi har det

Hvis datoen ikke opdateres, betyder det en af to ting: SQL Server kan ikke skrive til databasen (som om den er skrivebeskyttet), eller den finder fejl (hoowee, ikke godt.)

Sådan løser du problemet

Beslut, om du vil bruge indbyggede vedligeholdelsesplaner eller et gratis værktøj som Ola Hallengrens gratis CHECKDB-scripts. Et par overvejelser:

  • Maintenance plans har en grafisk grænseflade, hvis du ikke kender T-SQL.
  • Ola Hallengrens gratis scripts tager sig af finjusterede indstillinger, som f.eks. automatisk at køre data_purity checks (hvilket er en god ting).

Sådan konfigurerer du regelmæssig vedligeholdelse for at kontrollere for korruption

Mulighed 1: Brug en vedligeholdelsesplan til at køre DBCC CHECKDB

Hvis du bruger vedligeholdelsesplaner, kan du redigere vedligeholdelsesplaner i SQL Server Management Studio under Management, Maintenance Plans. Din server kan have flere vedligeholdelsesplaner, der kører CHECKDB for forskellige typer databaser, f.eks. en for systemdatabaser og en for brugerdatabaser.

Udvide noden Management i SSMS, højreklik på Maintenance Plans, og vælg New Plan.

Fra værktøjskassevinduet, som nogle gange bliver skjult ovre til venstre, skal du trække opgaven Check Database Integrity Task over til fanen Maintenance Plan.

Når du dobbeltklikker på feltet Check Database Integrity Task i fanen Maintenance Plan, kan du vælge, hvilke databaser du vil have kontrolleret under processen.

Derfra er der kun tilbage at planlægge det, hvilket er ligesom at planlægge et Agentjob.

Når du gemmer og lukker vedligeholdelsesplanen, skal du sørge for at finde det relaterede job i SQL Server Agent og indstille egenskaberne Notifikation for at give en operatør besked, hvis det mislykkes.

Mulighed 2: Opsætning af SQL Agent-jobs til at køre DBCC CHECKDB ved hjælp af Ola Hallengrens gratis scripts

Og hvis du implementerer integritetskontroller for første gang, kan du overveje at bruge Ola Hallengrens gratis vedligeholdelsesscripts. De er ikke helt så nemme som vedligeholdelsesplaner, men de er meget mere fleksible. De omfatter også muligheden for at opdele DBCC-operationer i mindre bidder til store databaser. På meget store databaser kan CHECKDB tage en betydelig mængde tid og ressourcer – WITH PHYSICAL_ONLY-indstillingen er hurtigere, men udelader de logiske kontroller.

Når agentjobbene er på plads, kan du planlægge dem til at køre lige så simpelt som vedligeholdelsesplaner, eller du kan finjustere dem med de yderligere muligheder, der er dokumenteret her.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.