Pagina principala » HOWTO » Batch Script pentru a face baza de date SQL Server de întreținere simplă

    Batch Script pentru a face baza de date SQL Server de întreținere simplă

    În plus față de crearea de copii de siguranță, există o varietate de sarcini și funcții pe care le oferă SQL Server, care pot ameliora performanța și fiabilitatea bazelor de date. V-am arătat anterior cum puteți să salvați bazele de date SQL Server cu un script simplu de linie de comandă, astfel încât în ​​același mod să furnizăm un script care vă va permite să efectuați cu ușurință sarcini comune de întreținere.

    Compactarea / micșorarea unei baze de date [/ Compact]

    Există mai mulți factori care contribuie la spațiul fizic pe disc pe care o utilizează o bază de date SQL Server. Doar pentru a numi câteva:

    • De-a lungul timpului, deoarece înregistrările sunt adăugate, șterse și actualizate, SQL crește în mod constant și se micșorează tabelele, precum și generând structuri temporare de date pentru a efectua manipulări de interogare. Pentru a satisface necesitățile de stocare a discurilor, SQL Server va mări dimensiunea bazei de date (de obicei cu 10%), astfel încât dimensiunea fișierului bazei de date să nu se schimbe în mod constant. În timp ce acest lucru este ideal pentru performanță, poate provoca o deconectare de la spațiul de stocare utilizat, deoarece, de exemplu, dacă adăugați un număr foarte mare de înregistrări care determină creșterea bazei de date și apoi ștergerea acestor înregistrări, SQL Server nu va recupera automat acest lucru spatiu pe disc.
    • Dacă utilizați Modul de recuperare completă în bazele dvs. de date, fișierul jurnal tranzacțional (LDF) poate crește destul de mare, în special în bazele de date cu un volum mare de actualizări.

    Compactarea (sau micșorarea) bazei de date va recupera spațiul de disc neutilizat. Pentru bazele de date mici (200 MB sau mai puțin) aceasta nu va fi foarte mare, dar pentru bazele de date mari (1 GB sau mai mult) spațiul recuperat poate fi semnificativ.

    Reindexarea unei baze de date [/ Reindex]

    Mai mult ca crearea, editarea și ștergerea în mod constant a fișierelor poate duce la fragmentarea discului, inserarea, actualizarea și ștergerea înregistrărilor dintr-o bază de date poate duce la fragmentarea tablelor. Rezultatele practice sunt aceleași în aceea că operațiile de citire și scriere suferă un succes. Deși nu este o analogie perfectă, reindexarea tabelelor dintr-o bază de date le defragmentează în esență. În unele cazuri, acest lucru poate crește semnificativ viteza de recuperare a datelor.

    Datorită modului în care funcționează SQL Server, tabelele trebuie reinvestite individual. Pentru bazele de date cu un număr mare de tabele, aceasta poate fi o adevărată durere de făcut manual, dar scriptul nostru lovește fiecare tabel din baza de date respectivă și reconstruiește toți indicii.

    Verificarea integrității [/ Verificare]

    Pentru ca o bază de date să rămână atât funcțională, cât și să producă rezultate precise, există numeroase elemente de integritate care trebuie să fie în vigoare. Din fericire, problemele de integritate fizică și / sau logică nu sunt foarte frecvente, dar este o bună practică să rulați ocazional procesul de verificare a integrității în bazele dvs. de date și să examinați rezultatele.

    Când procesul de verificare este rulat prin scriptul nostru, sunt raportate numai erorile, deci nici o veste nu este o veste bună.

    Utilizarea scriptului

    Scriptul batch SQLMaint este compatibil cu SQL 2005 și versiuni ulterioare și trebuie executat pe o mașină care are instalat instrumentul SQLCMD (instalat ca parte a instalării SQL Server). Se recomandă să lăsați acest script într-o locație setată în variabila Windows PATH (adică C: Windows), astfel încât să poată fi ușor apelată ca orice altă aplicație din linia de comandă.

    Pentru a vedea informațiile de ajutor, introduceți pur și simplu:

    SQLMaint /?

    Exemple

    Pentru a rula un compact și apoi verificați baza de date "MyDB" utilizând o conexiune de încredere:

    SQLMaint MyDB / Compact / Verificați

    Pentru a rula un reindex și apoi compacte pe "MyDB" pe instanța numită "Special" folosind utilizatorul "sa" cu parola "123456":

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

    Utilizarea din interiorul unui script batch

    În timp ce scriptul batch SQLMaint poate fi folosit ca o aplicație din linia de comandă, atunci când o utilizați în interiorul unui alt script batch, trebuie precedat cu cuvântul cheie CALL.

    De exemplu, acest script execută toate sarcinile de întreținere pe fiecare bază de date non-sistem pe o instalare implicită SQL Server folosind autentificare de încredere:

    @CHO OFF
    SETLOCAL EnableExtensions
    SET DBList = "% TEMP% DBList.txt"
    SqlCmd -E -h-1 -w 300-Q "SET Nr. SELECT Numele din master.dbo.sysDatabase WHERE Numele nu este IN ('master', 'model', 'msdb', 'tempdb') ">% DBList%
    FORF / F "usebackq tokens = 1" %% i IN (% DBList%) DO (
    CALL SQLMaint "%% i" / Compact / Reindex / Verify
    ECOU +++++++++++
    )
    DACĂ EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Descărcați scriptul SQLMaint Batch Script de la SysadminGeek.com