Koduleht » kuidas » Partii skript, mis muudab SQL Server andmebaasi hooldamise lihtsaks

    Partii skript, mis muudab SQL Server andmebaasi hooldamise lihtsaks

    Lisaks varukoopiate loomisele on SQL Serveril mitmeid ülesandeid ja funktsioone, mis võimaldavad nii parandada teie andmebaaside toimivust kui ka usaldusväärsust. Oleme varem näidanud teile, kuidas varundada SQL Serveri andmebaase lihtsa käsurea skripti abil, nii et samal viisil pakume skripti, mis võimaldab teil hõlpsasti teha tavalisi hooldustöid.

    Andmebaasi tihendamine / vähendamine [/ Compact]

    SQL Serveri andmebaasi kasutamisel on füüsilisele kettaruumile mitmeid tegureid. Lihtsalt mõne nime nimetamine:

    • Aja jooksul, kui dokumente lisatakse, kustutatakse ja ajakohastatakse, kasvab ja tabab SQL pidevalt tabeleid ning genereerib päringu manipuleerimiseks ajutisi andmestruktuure. Plaadi salvestamise vajaduste rahuldamiseks suurendab SQL Server vastavalt vajadusele andmebaasi suurust (tavaliselt 10%), et andmebaasi faili suurus ei muutuks pidevalt. Ehkki see on toimivuse jaoks ideaalne, võib see katkestada kasutatud salvestusruumiga, sest kui lisate näiteks väga suure hulga dokumente, mis põhjustavad andmebaasi kasvamist ja hiljem need kirjed kustutatakse, SQL Server seda automaatselt tagasi ei nõua kettaruum.
    • Kui kasutate oma andmebaasides täieliku taastamise režiimi, võib tehingu logifail (LDF) kasvada üsna suureks, eriti suurte uuendustega andmebaasides.

    Andmebaasi tihendamine (või kahanemine) taastab kasutamata kettaruumi. Väikeste andmebaaside puhul (200 MB või vähem) ei ole see tavaliselt väga suur, kuid suurte andmebaaside puhul (1 GB või rohkem) võib regenereeritud ruum olla märkimisväärne.

    Andmebaasi uuendamine [/ Reindex]

    Sarnaselt failide pidevale loomisele, redigeerimisele ja kustutamisele võib kaasa tuua ketaste killustumise, andmete sisestamine, uuendamine ja kustutamine andmebaasi võib viia tabeli killustumiseni. Praktilised tulemused on samad, et lugemis- ja kirjutusoperatsioonid kannatavad tulemuslikkuse löögi all. Kuigi see ei ole täiuslik analoogia, defragmenteerib andmebaasi tabelid uuesti. Mõnel juhul võib see oluliselt suurendada andmete otsimise kiirust.

    SQL Serveri toimimise tõttu tuleb tabeleid individuaalselt uuesti vaadata. Paljude tabelite andmebaaside puhul võib see olla tõeline valu käsitsi, kuid meie skript tabab iga andmebaasi vastavat tabelit ja taastab kõik indeksid.

    Terviklikkuse kontrollimine [/ Verify]

    Selleks, et andmebaas jääks nii funktsionaalseks kui ka täpse tulemuse saamiseks, on olemas mitmeid terviklikkuse elemente. Õnneks ei ole füüsilised ja / või loogilised terviklikkuse probleemid väga levinud, kuid hea tava on aeg-ajalt käivitada terviklikkuse kontrollimise protsess oma andmebaasides ja vaadata tulemused üle.

    Kui kontrollprotsess on läbi meie skripti, siis teatatakse ainult vigadest, seega ei ole uudised head uudised.

    Skripti kasutamine

    SQLMainti partii skript on ühilduv SQL 2005 ja kõrgema tasemega ning seda tuleb käivitada masinal, millel on installeeritud SQLCMD tööriist (installitud SQL Serveri installimise osana). Soovitatav on see skript oma Windows PATH muutujasse (nt C: Windows) paigutatud asukohta tühistada, nii et seda saab käsurealt hõlpsasti kutsuda nagu mis tahes muud rakendust.

    Abiteabe vaatamiseks sisestage lihtsalt:

    SQLMaint /?

    Näited

    Kompaktse ja seejärel andmebaasi „MyDB” kontrollimiseks usaldusväärse ühenduse abil:

    SQLMaint MyDB / Compact / Verify

    Reindexi käivitamiseks ja seejärel "MyDB" -le kompakteerimiseks nimega "Special", kasutades "sa" kasutajat parooliga "123456":

    SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindex / Compact

    Kasutamine partii skripti sisemusest

    Kuigi SQLMainti partii skripti saab kasutada käsurealt nagu rakendust, siis kui seda kasutate teise partii skripti sees, tuleb sellele eelistada CALL-märksõna.

    Näiteks käivitab see skript kõiki hooldusülesandeid kõigis mitte-süsteemiandmebaasides vaikimisi SQL Serveri installimisel, kasutades usaldusväärset autentimist:

    @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 märgid = 1” %% i IN (% DBList%) DO (
    CALL SQLMaint “%% i” / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    IF EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Laadige SQLMaint Batch Script SysadminGeek.com-st alla