/ / Dávkový skript na zjednodušenie údržby databázy SQL Server

Dávkový skript na zjednodušenie údržby databázy SQL Server

Okrem vytvárania záloh existujú ajmnožstvo úloh a funkcií, ktoré poskytuje server SQL Server, ktoré môžu zlepšiť výkon a spoľahlivosť vašich databáz. Už sme vám predtým ukázali, ako zálohovať databázy SQL Server pomocou jednoduchého skriptu príkazového riadku, takže rovnakým spôsobom poskytujeme skript, ktorý vám umožní ľahko vykonávať bežné úlohy údržby.

Zhutnenie / zmenšenie databázy [/ Kompaktné]

Existuje niekoľko faktorov, ktoré prispievajú k fyzickému disku, ktorý používa databáza SQL Server. Len aby sme vymenovali aspoň niektoré:

  • Postupom času, keď sa záznamy pridávajú, odstraňujú aaktualizované, SQL neustále rastie a zmenšuje tabuľky, ako aj generuje dočasné dátové štruktúry na vykonávanie dopytových manipulácií. Aby sa vyhovelo potrebám ukladacieho priestoru na disku, SQL Server podľa potreby zväčší veľkosť databázy (zvyčajne o 10%), aby sa veľkosť databázového súboru nemenila. Aj keď je to ideálne pre výkon, môže to spôsobiť odpojenie od použitého úložného priestoru, pretože ak napríklad pridáte veľmi veľké množstvo záznamov, ktoré spôsobia rast databázy a následne tieto záznamy odstránite, SQL Server to automaticky nevymení. miesto na disku.
  • Ak vo svojich databázach používate režim úplnej obnovy, súbor transakčných protokolov (LDF) sa môže zväčšiť pomerne veľký, najmä v databázach s veľkým objemom aktualizácií.

Zhutnenie (alebo zmenšenie) databázy budezískať späť nevyužité miesto na disku. Pre malé databázy (200 MB alebo menej) to obvykle nebude veľa, ale pre veľké databázy (1 GB alebo viac) môže byť regenerovaný priestor významný.

Reindexovanie databázy [/ Reindex]

Rovnako ako neustále vytváranie, úpravy amazanie súborov môže viesť k fragmentácii disku, vkladanie, aktualizácia a mazanie 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 zápisu trpia výkonnostným zásahom. Aj keď nejde o dokonalú analógiu, reindexovanie tabuliek v databáze ich v podstate defragmentuje. V niektorých prípadoch to môže výrazne zvýšiť rýchlosť získavania údajov.

Kvôli spôsobu práce servera SQL Server musia byť tabuľkyreindexované jednotlivo. V prípade databáz s veľkým počtom tabuliek to môže byť skutočná bolesť urobiť ručne, ale náš skript zasiahne každú tabuľku v príslušnej databáze a znova vytvorí všetky indexy.

Overenie integrity [/ Overiť]

Aby databáza zostala funkčnáa prinášajú presné výsledky, musí existovať množstvo položiek integrity. Našťastie nie sú problémy s fyzickou a / alebo logickou integritou príliš časté, je však dobré občas spustiť proces overovania integrity v databázach a skontrolovať výsledky.

Keď sa proces overovania spustí prostredníctvom nášho skriptu, nahlásia sa iba chyby, takže žiadna správa nie je dobrá správa.

Použitie skriptu

Dávkový skript SQLMaint je kompatibilný s SQL2005 a novšie a musí byť spustený na počítači, ktorý má nainštalovaný nástroj SQLCMD (nainštalovaný ako súčasť inštalácie servera SQL). Tento skript sa odporúča umiestniť do umiestnenia nastaveného vo vašej premennej Windows PATH (t. J. C: Windows), aby sa dal ľahko nazvať ako každá iná aplikácia z príkazového riadku.

Ak chcete zobraziť informácie pomocníka, jednoducho zadajte:

SQLMaint /?

obraz

Príklady

Ak chcete spustiť kompaktný a potom overiť databázu „MyDB“ pomocou dôveryhodného pripojenia:

SQLMaint MyDB / Compact / Verify

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

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

Použitie zo šarže dávky

Hoci dávkový skript SQLMaint možno použiť ako aplikáciu z príkazového riadku, keď ho používate v inom dávkovom skripte, musí mu predchádzať kľúčové slovo CALL.

Tento skript napríklad spúšťa všetky úlohy údržby v každej nesystémovej databáze na predvolenej inštalácii servera SQL Server pomocou dôveryhodného overenia:

@ECHO VYPNUTÉ
SETLOCAL EnableExtensions
SET DBList = ”% TEMP% DBList.txt”
SqlCmd -E -h-1 -w 300 -Q “SET NoCount ON; VYBERTE Názov Z master.dbo.sysDatabázy KDE Meno nie je IN („master“, model,, msdb, tempdb) ”>% DBList%
FOR / F „usebackq tokeny = 1“ %% i IN (% DBList%) DO (
VYZÝVAJTE SQLMaint „%% i“ / Kompaktný / Reindex / Overiť
ECHO ++++++++++
)
AK EXISTUJTE% DBList% DEL / F / Q% DBList%
ENDLOCAL

Stiahnite si SQLMaint Batch Script zo stránky SysadminGeek.com