Úvodná » ako » Dávkový skript, aby sa SQL Server databázy Údržba jednoduché

    Dávkový skript, aby sa SQL Server databázy Údržba jednoduché

    Okrem vytvárania záloh existuje množstvo úloh a funkcií, ktoré poskytuje SQL Server, čo môže zlepšiť výkonnosť a spoľahlivosť vašich databáz. Predtým sme vám ukázali, ako zálohovať databázy SQL Server s jednoduchým skriptom príkazového riadka, takže rovnakým spôsobom poskytujeme skript, ktorý vám umožní jednoducho vykonávať bežné úlohy údržby.

    Kompaktovanie / zmenšovanie databázy [/ Compact]

    Existuje niekoľko faktorov, ktoré prispievajú k fyzickému diskovému priestoru, ktorý používa databáza servera SQL Server. Stačí zadať len niekoľko:

    • V priebehu času, keď sa záznamy pridávajú, odstraňujú a aktualizujú, SQL neustále rastie a zmenšuje tabuľky, ako aj vytvára dočasné dátové štruktúry na vykonávanie manipulácií s dopytom. Aby sa vyhovelo požiadavkám na ukladanie diskov, SQL Server zvýši veľkosť databázy (zvyčajne o 10%) podľa potreby, takže veľkosť súboru databázy sa neustále mení. Aj keď je to ideálne pre výkonnosť, môže to spôsobiť odpojenie od použitého úložného priestoru, pretože napríklad ak pridáte veľmi veľký počet záznamov, ktoré spôsobujú nárast databázy a následné odstránenie týchto záznamov, SQL Server túto možnosť nebude automaticky obnoviť miesto na disku.
    • Ak používate režim plného zotavenia vo vašich databázach, transakčný protokolový súbor (LDF) môže rásť pomerne veľký, najmä v databázach s vysokým objemom aktualizácií.

    Kompaktovanie (alebo zmenšovanie) databázy bude vyžadovať nevyužité miesto na disku. Pre malé databázy (200 MB alebo menej) to zvyčajne nebude príliš veľa, ale pre veľké databázy (1 GB alebo viac) môže byť regenerovaný priestor významný.

    Reindexovanie databázy [/ Reindex]

    Podobne ako neustále vytváranie, úprava a odstraňovanie súborov môže viesť k fragmentácii disku, vkladanie, aktualizácia a odstraňovanie záznamov v databáze môže viesť k fragmentácii tabuľky. Praktické výsledky sú rovnaké v tom, že operácie čítania a písania trpia hitom výkonu. Aj keď nie je dokonalá analógia, reindexovanie tabuliek v databáze ich v podstate rozdeľuje. V niektorých prípadoch to môže výrazne zvýšiť rýchlosť vyhľadávania údajov.

    Vzhľadom na to, ako funguje SQL Server, tabuľky musia byť reindexované individuálne. Pri databázach s veľkým počtom tabuliek to môže byť skutočná bolesť robiť ručne, ale náš skript narazí na každú tabuľku v príslušnej databáze a obnoví všetky indexy.

    Overovanie integrity [/ Verify]

    Na to, aby databáza zostala funkčná a produkovala presné výsledky, existuje mnoho prvkov integrity, ktoré musia byť zavedené. Našťastie problémy s fyzickou a / alebo logickou integritou nie sú veľmi časté, ale je dobrou praxou občas spustiť proces overenia integrity vo vašich databázach a preskúmať výsledky.

    Keď sa overovací proces spustí prostredníctvom nášho skriptu, hlásia sa iba chyby, takže žiadne správy nie sú dobrou správou.

    Používanie skriptu

    Dávkový skript SQLMaint je kompatibilný s SQL 2005 a vyšším a musí byť spustený na stroji, ktorý má nainštalovaný nástroj SQLCMD (inštalovaný ako súčasť inštalácie SQL Serveru). Tento skript sa odporúča umiestniť na miesto nastavené vo vašej premennej Windows PATH (tzn. C: Windows), aby sa dalo ľahko nazývať ako akákoľvek iná aplikácia z príkazového riadku.

    Ak chcete zobraziť informácie o pomoci, jednoducho zadajte:

    SQLMaint /?

    Príklady

    Ak chcete spustiť kompaktnú verziu a overiť v databáze "MyDB" pomocou dôveryhodného pripojenia:

    SQLMaint MyDB / Compact / Overiť

    Ak chcete spustiť reindex a potom kompaktovať na "MyDB" v pomenovanej inštancii "Special" pomocou "sa" užívateľa s heslom "123456":

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

    Použitie z vnútra dávkového skriptu

    Zatiaľ čo dávkový skript SQLMaint môže byť použitý ako aplikácia z príkazového riadku, ak ju používate vo vnútri iného dávkového skriptu, musí sa mu predchádzať kľúčové slovo CALL.

    Napríklad tento skript spúšťa všetky úlohy údržby v každej nesystémovej databáze na predvolenej inštalácii SQL Server pomocou dôveryhodnej autentifikácie:

    @ OFF OFF
    SETLOCAL EnableExtensions
    SET DBList = "% TEMP% DBList.txt"
    SqlCmd -E -h-1 -w 300 -Q "SET NoCount ON; SELECT meno FROM master.dbo.sysDatabázy WHERE meno nie je IN ('master', 'model', 'msdb', 'tempdb') ">% DBList%
    FOR / F "usebackq tokeny = 1" %% IN IN (% DBList%) DO (
    CALL SQLMaint "%% i" / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    Ak existujú% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Stiahnite si dávkový skript SQLMaint zo stránky SysadminGeek.com