Partijos scenarijus, skirtas „SQL Server“ duomenų bazės palaikymui paprasta
Be atsarginių kopijų kūrimo, yra įvairių užduočių ir funkcijų, kurias teikia „SQL Server“, kurios gali pagerinti duomenų bazių našumą ir patikimumą. Anksčiau mes parodėme, kaip atsarginę SQL Server duomenų bazę kopijuoti su paprastu komandinės eilutės scenarijumi, taigi tokiu pačiu būdu teikiame scenarijų, kuris leis jums lengvai atlikti įprastas priežiūros užduotis.
Duomenų bazės suglaudinimas / mažinimas [/ Compact]
Yra keletas veiksnių, kurie prisideda prie fizinės disko vietos SQL Server duomenų bazėje. Tiesiog pavadinkite keletą:
- Laikui bėgant, kai įrašai pridedami, ištrinami ir atnaujinami, SQL nuolat auga ir mažėja lentelės, taip pat generuoja laikinas duomenų struktūras užklausų manipuliacijoms atlikti. Siekiant patenkinti disko saugojimo poreikius, SQL Server padidins duomenų bazės dydį (paprastai 10%), kad duomenų bazės failo dydis ne visada keistųsi. Nors tai idealiai tinka darbui, tai gali sukelti atjungimą nuo naudojamos atminties vietos, nes jei, pavyzdžiui, pridedate labai daug įrašų, dėl kurių duomenų bazė auga ir vėliau ištrinami šie įrašai, „SQL Server“ automatiškai neatgaus šio įrašo disko talpa.
- Jei savo duomenų bazėse naudojate visiško atkūrimo režimą, sandorių žurnalo failas (LDF) gali augti gana didelis, ypač duomenų bazėse, kuriose yra didelis atnaujinimų kiekis.
Duomenų bazės suglaudinimas (arba susitraukimas) atgaus nenaudojamos vietos diske. Mažoms duomenų bazėms (200 MB ar mažiau) tai paprastai nebus labai daug, bet didelėms duomenų bazėms (1 GB ar daugiau) regeneruota erdvė gali būti didelė.
Duomenų bazės atkūrimas [/ Reindex]
Panašiai kaip nuolat kurti, redaguoti ir ištrinti failus, diskų susiskaidymas gali sukelti duomenų įrašymą į duomenų bazę, ją atnaujinti ir ištrinti. Praktiniai rezultatai yra tokie patys, nes skaitymo ir rašymo operacijos patiria našumą. Nors tai nėra tobula analogija, duomenų bazėse esančių lentelių pakartotinis tyrimas iš esmės juos defragmentuoja. Kai kuriais atvejais tai gali žymiai padidinti duomenų paieškos greitį.
Dėl SQL Server veikimo, lentelės turi būti atskirtos atskirai. Duomenų bazėse, kuriose yra daug stalų, tai gali būti tikras skausmas rankiniu būdu, bet mūsų scenarijus paspaudžia kiekvieną lentelę atitinkamoje duomenų bazėje ir atkuria visus indeksus.
Sąžiningumo patvirtinimas [/ Verify]
Siekiant, kad duomenų bazė išliktų funkcionali ir gautų tikslius rezultatus, yra daug vientisumo elementų, kurie turi būti įdiegti. Laimei, fizinės ir (arba) loginės vientisumo problemos nėra labai paplitusios, tačiau tai yra gera praktika kartais paleisti vientisumo patvirtinimo procesą savo duomenų bazėse ir peržiūrėti rezultatus.
Kai patikrinimo procesas vyksta per mūsų scenarijų, pranešama tik apie klaidas, todėl jokios naujienos nėra geros naujienos.
Naudojant scenarijų
„SQLMaint“ partijos scenarijus yra suderinamas su „SQL 2005“ ir naujesnėmis versijomis ir turi būti paleistas įrenginyje, kuriame įdiegtas „SQLCMD“ įrankis (įdiegtas kaip „SQL Server“ diegimo dalis). Rekomenduojama šį scenarijų nukreipti į vietą, nustatytą jūsų „Windows PATH“ kintamajame (t. Y. C: „Windows“), kad ji būtų lengvai vadinama kaip bet kuri kita programa iš komandų eilutės.
Jei norite peržiūrėti pagalbos informaciją, tiesiog įveskite:
SQLMaint /?
Pavyzdžiai
Jei norite paleisti kompaktišką ir patvirtinti duomenų bazėje „MyDB“, naudodami patikimą ryšį:
SQLMaint MyDB / Kompaktiškas / Patikrinkite
Jei norite paleisti „reindex“ ir tada kompaktišką „MyDB“ ant pavadinimo „Special“, naudodami „sa“ naudotoją su slaptažodžiu „123456“:
SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact
Naudojimas iš partijos scenarijaus viduje
Nors „SQLMaint“ partijos scenarijus gali būti naudojamas kaip programa iš komandinės eilutės, kai naudojate jį kito partijos scenarijaus viduje, prieš tai turi būti CALL raktinis žodis.
Pvz., Šis scenarijus atlieka visas techninės priežiūros užduotis kiekvienoje ne sistemos duomenų bazėje pagal numatytąjį SQL serverio diegimą naudojant patikimą autentifikavimą:
@ECHO OFF
SETLOCAL EnableExtensions
SET DBList = ”% TEMP% DBList.txt“
SqlCmd -E -h-1 -w 300 -Q „SET NoCount ON; SELECT Name from master.dbo.sysDatabases WHERE Name Not IN ('master', 'model', 'msdb', 'tempdb') ">% DBList%
FOR / F „usebackq žetonai = 1“ %% i IN (% DBList%) DO (
CALL SQLMaint „%% i“ / Kompaktiškas / Reindex / Verify
ECHO +++++++++++
)
IF EXIST% DBList% DEL / F / Q% DBList%
ENDLOCAL
Atsisiųskite SQLMaint partijos scenarijų iš „SysadminGeek.com“