If-Koubou

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ă (Cum să)

Î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 îmbunătăți performanța și fiabilitatea bazelor de date. Noi v-am arătat anterior cum să efectuați o copie de rezervă a bazelor 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 nevoile de stocare a discurilor, SQL Server va mări dimensiunea bazei de date (de obicei cu 10%), după cum este necesar, 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 tabelului. 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 într-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 toate indexurile.

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 practică bună 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 compactor și apoi a verifica baza de date "MyDB" folosind 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 îl folosiți în interiorul unui alt script batch, acesta 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 / Verificați
ECHO +++++++++++
)
DACĂ EXIST% DBList% DEL / F / Q% DBList%
ENDLOCAL

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