Domača » kako » Serijski skript za vzdrževanje baze podatkov SQL Server Simple

    Serijski skript za vzdrževanje baze podatkov SQL Server Simple

    Poleg ustvarjanja varnostnih kopij so na voljo različne naloge in funkcije, ki jih ponuja SQL Server, ki lahko izboljšajo zmogljivost in zanesljivost vaših podatkovnih baz. V preteklosti smo vam pokazali, kako izdelate varnostno kopijo podatkovnih baz SQL Server s preprostim skriptom v ukazni vrstici, tako da vam na enak način nudimo skript, ki vam bo omogočil enostavno izvajanje skupnih vzdrževalnih opravil..

    Stiskanje / krčenje baze podatkov [/ Compact]

    Obstaja več dejavnikov, ki prispevajo k fizičnemu diskovnemu prostoru, ki ga uporablja baza podatkov SQL Server. Samo da navedem nekaj:

    • Sčasoma, ko se zapisi dodajajo, brišejo in posodabljajo, SQL nenehno narašča in krči tabele ter ustvarja začasne podatkovne strukture za izvajanje manipulacij poizvedb. Če želite prilagoditi potrebam za shranjevanje na disku, bo SQL Server po potrebi povečal velikost baze podatkov (običajno za 10%), tako da se velikost datoteke baze podatkov ne spreminja nenehno. Čeprav je to idealno za zmogljivost, lahko povzroči prekinitev povezave z uporabljenim pomnilniškim prostorom, ker če na primer dodate zelo veliko število zapisov, zaradi katerih baza podatkov raste in nato izbriše te zapise, SQL Server tega ne bo samodejno obnovil. prostora na disku.
    • Če v podatkovnih bazah uporabljate celoten način obnovitve, lahko datoteka dnevnika transakcij (LDF) postane precej velika, zlasti v podatkovnih bazah z veliko količino posodobitev.

    Kompaktiranje (ali krčenje) baze podatkov bo povrnilo neuporabljen prostor na disku. Za majhne podatkovne zbirke (200 MB ali manj) to ponavadi ne bo veliko, toda za velike baze podatkov (1 GB ali več) je lahko povrnjeni prostor pomemben.

    Ponovno indeksiranje baze podatkov [/ Reindex]

    Podobno kot stalno ustvarjanje, urejanje in brisanje datotek lahko povzroči fragmentacijo diska, lahko vstavljanje, posodabljanje in brisanje zapisov v bazi podatkov vodi do razdrobljenosti tabele. Praktični rezultati so enaki pri operacijah branja in pisanja, ki trpijo zaradi uspešnosti. Čeprav to ni popolna analogija, ponovno indeksiranje tabel v podatkovni bazi jih v bistvu defragmentira. V nekaterih primerih lahko to bistveno poveča hitrost pridobivanja podatkov.

    Zaradi načina, na katerega SQL Server deluje, je treba tabele ponovno indeksirati. Za baze podatkov z velikim številom tabel je to lahko resnična bolečina ročno, vendar naš skript zadene vsako tabelo v posamezni bazi podatkov in ponovno zgradi vse indekse..

    Preverjanje integritete [/ preverjanje]

    Da bi baza podatkov ostala funkcionalna in bi prinesla točne rezultate, je treba vzpostaviti številne elemente integritete. Na srečo težave s fizično in / ali logično integriteto niso zelo pogoste, vendar je dobra praksa, da občasno zaženete postopek preverjanja integritete v vaših podatkovnih bazah in pregledate rezultate.

    Ko se postopek preverjanja izvede skozi naš skript, se poroča samo o napakah, zato nobena novica ni dobra novica.

    Uporaba skripta

    Paket SQLMaint je združljiv s SQL 2005 in novejšim ter se mora izvajati na računalniku, ki ima nameščeno orodje SQLCMD (nameščeno kot del namestitve SQL Server). Priporočamo vam, da ta scenarij spustite na lokacijo, ki je nastavljena v spremenljivki Windows PATH (tj. C: Windows), tako da jo lahko preprosto imenujete kot katero koli drugo aplikacijo iz ukazne vrstice..

    Če si želite ogledati informacije o pomoči, preprosto vnesite:

    SQLMaint /?

    Primeri

    Če želite zagnati kompakt in nato preveriti v bazi podatkov »MyDB« z uporabo zaupanja vredne povezave:

    SQLMaint MyDB / Compact / Preveri

    Za zagon reindeksa in nato kompaktiranje na “MyDB” na imenovanem primerku “Special” z uporabo uporabnika “sa” z geslom “123456”:

    SQLMaint MyDB /S:Posebno / U: sa / P: 123456 / Reindex / Compact

    Uporaba iz notranjosti skripta paketa

    Paketni skript SQLMaint lahko v ukazni vrstici uporabite kot aplikacijo, ko jo uporabljate v drugem paketnem skriptu, pa mora biti pred njo ključna beseda CALL.

    Ta skript na primer izvaja vsa vzdrževalna opravila na vsaki ne-sistemski bazi podatkov o privzeti namestitvi strežnika SQL, ki uporablja overjeno overjanje:

    @ECHO OFF
    SETLOCAL EnableExtensions
    SET DBList = ”% TEMP% DBList.txt”
    SqlCmd -E -h-1 -w 300 -Q “SET NoCount ON; SELECT Ime IZ master.dbo.sysDatabases WHERE Ime Ni IN ('master', 'model', 'msdb', 'tempdb') '>% DBList%
    FOR / F »usebackq tokens = 1« DO%% i IN (% DBList%) (
    CALL SQLMaint “%% i” / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    Če obstaja% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Prenesite paket SQLMaint iz SysadminGeek.com