Batch skriptu kako bi SQL Server održavanje baze podataka Jednostavno
Osim stvaranja sigurnosnih kopija, postoje različiti zadaci i funkcije koje SQL Server čini dostupnim, što može poboljšati performanse i pouzdanost vaših baza podataka. Prethodno smo vam pokazali kako sačuvati baze podataka SQL Servera jednostavnim skriptom za naredbeni redak, tako da na isti način pružamo i skriptu koja će vam omogućiti jednostavno izvođenje uobičajenih zadataka održavanja..
Kompaktiranje / skupljanje baze podataka [/ Compact]
Postoji nekoliko čimbenika koji doprinose fizičkom diskovnom prostoru koji koristi SQL Server baza podataka. Samo da navedem nekoliko:
- S vremenom se dodaju, brišu i ažuriraju zapisi, SQL stalno raste i smanjuje tablice, kao i generira privremene podatkovne strukture za izvođenje manipulacija upitima. Kako bi se zadovoljile potrebe za pohranom na disku, SQL Server će povećati veličinu baze podataka (obično za 10%) prema potrebi, tako da se veličina datoteke baze podataka ne mijenja stalno. Iako je to idealno za izvedbu, može uzrokovati prekid veze s prostorom za pohranu koji se koristi jer, na primjer, ako dodate vrlo velik broj zapisa koji uzrokuju rast baze podataka i naknadno brisanje tih zapisa, SQL Server neće automatski ponovno zatražiti to prostor na disku.
- Ako u svojim bazama podataka koristite opciju potpunog oporavka, datoteka transakcijskog dnevnika (LDF) može rasti prilično velika, posebno u bazama podataka s velikim brojem ažuriranja.
Zbijanje (ili skupljanje) baze podataka će povratiti neiskorišteni prostor na disku. Za male baze podataka (200 MB ili manje) to obično neće biti puno, ali za velike baze podataka (1 GB ili više) obnovljeni prostor može biti značajan.
Ponovno indeksiranje baze podataka [/ Reindex]
Slično kao i stalno stvaranje, uređivanje i brisanje datoteka može dovesti do fragmentacije diska, umetanje, ažuriranje i brisanje zapisa u bazi podataka može dovesti do fragmentacije tablice. Praktični rezultati su isti u tome što operacije čitanja i pisanja trpe učinak. Iako to nije savršena analogija, ponovno indeksiranje tablica u bazi podataka ih u biti defragmentira. U nekim slučajevima to može značajno povećati brzinu preuzimanja podataka.
Zbog načina na koji SQL Server radi, tablice se moraju ponovno indeksirati pojedinačno. Za baze podataka s velikim brojem tablica to može biti stvarna bol za ručno, ali naša skripta pogađa svaku tablicu u odgovarajućoj bazi podataka i obnavlja sve indekse.
Provjera integriteta [/ Verify]
Da bi baza podataka ostala funkcionalna i dala točne rezultate, postoje brojni elementi integriteta koji moraju biti na mjestu. Srećom, problemi s fizičkim i / ili logičkim integritetom nisu vrlo česti, ali dobra je praksa da povremeno pokrenete proces provjere integriteta u svojim bazama podataka i pregledate rezultate.
Kada se proces provjere provodi kroz našu skriptu, prijavljuju se samo pogreške, tako da nijedna vijest nije dobra vijest.
Korištenje skripte
SQLMaint serijski skript je kompatibilan sa SQL 2005 i višim i mora se izvoditi na stroju koji ima instaliran SQLCMD alat (instaliran kao dio instalacije SQL Servera). Preporučuje se da ispustite ovu skriptu na lokaciju postavljenu u vašoj varijabli Windows PATH (tj. C: Windows) kako biste je mogli jednostavno pozvati kao bilo koju drugu aplikaciju iz naredbenog retka.
Da biste pogledali informacije o pomoći, jednostavno unesite:
SQLMaint /?
Primjeri
Da biste pokrenuli kompakt, a zatim potvrdili u bazi podataka "MyDB" pomoću pouzdane veze:
SQLMaint MyDB / Compact / Verify
Za pokretanje reindeksa, a zatim kompaktiranja na "MyDB" na imenovanom primjerku "Special" pomoću "sa" korisnika s lozinkom "123456":
SQLMaint MyDB /S:Posebna / U: sa / P: 123456 / Reindex / Compact
Korištenje iz Inside of Batch Script
Dok se SQLMaint batch skripta može koristiti kao aplikacija iz naredbenog retka, kada je koristite unutar drugog batch skripta, mora joj prethoditi CALL ključna riječ.
Na primjer, ova skripta izvodi sve zadatke održavanja na svakoj ne-sistemskoj bazi podataka na defaultnoj instalaciji sustava SQL Server pomoću provjere autentičnosti:
@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 Naziv nije IN ('master', 'model', 'msdb', 'tempdb') '>% DBList%
FOR / F “usebackq tokeni = 1” DO%% i IN (% DBList%) (
CALL SQLMaint “%% i” / Compact / Reindex / Verify
JEKA +++++++++++
)
Ako postoji% DBList% DEL / F / Q% DBList%
ENDLOCAL
Preuzmite skriptu SQLMaint iz SysadminGeek.com