If-Koubou

Batch Script tehdä SQL Server-tietokannan ylläpito yksinkertainen

Batch Script tehdä SQL Server-tietokannan ylläpito yksinkertainen (Miten)

Varmuuskopioiden luomisen lisäksi SQL Server tarjoaa erilaisia ​​tehtäviä ja toimintoja, jotka voivat sekä parantaa tietokantojen suorituskykyä että luotettavuutta. Olemme aiemmin näyttäneet, miten SQL Server -tietokantojen varmuuskopiointi on yksinkertainen komentorivin skripti, joten samalla tavalla tarjoamme käsikirjoituksen, jonka avulla voit helposti suorittaa yhteisiä ylläpitotehtäviä.

Tietokannan tiivistäminen / kutistuminen [/ Compact]

SQL Server -tietokannan fyysiseen levytilaan vaikuttaa useita tekijöitä. Mainitakseni muutaman:

  • Ajan myötä tietueet lisätään, poistetaan ja päivitetään, SQL kasvaa jatkuvasti ja kutistuu taulukoita sekä luo tilapäisiä tietorakenteita kyselyjen manipulointiin. Levyjen tallennustarpeiden huomioon ottamiseksi SQL Server lisää tietokannan kokoa (tavallisesti 10%) tarpeen mukaan, joten tietokantatiedoston koko ei ole jatkuvasti muuttumassa. Vaikka tämä on ihanteellinen suorituskykyä varten, se voi aiheuttaa yhteyden käyttämääsi tallennustilaan, koska jos esimerkiksi lisäät huomattavan määrän tietueita, jotka aiheuttavat tietokannan kasvavan ja myöhemmin poistavat nämä tietueet, SQL Server ei automaattisesti palauta tätä levytila.
  • Jos käytät täydellistä palautustilaa tietokannoissa, tapahtumaloki (LDF) voi kasvaa melko suureksi erityisesti tietokannoissa, joissa on paljon päivityksiä.

Tietokannan kokoaminen (tai kutistuminen) palauttaa käyttämättömät levytilat. Pienille tietokannoille (200 MB tai vähemmän) tämä ei tavallisesti ole kovin suuri, mutta suurille tietokannoille (1 GB tai enemmän) palautettu tila voi olla merkittävä.

Tietokannan uudelleenindeksointi [/ Reindex]

Paljon kuin jatkuvasti tiedostojen luominen, muokkaaminen ja poistaminen voi johtaa levyn pirstoutumiseen, tietokantojen tallentamisen, päivittämisen ja poistamisen voi johtaa taulukon hajoamiseen. Käytännön tulokset ovat samat siinä, että luku- ja kirjoitustoiminta kärsii suorituskykyä. Vaikka ei ole täydellinen analogia, taulukkojen uudelleenindeksointi tietokantaan olennaisesti eheyttää ne. Joissakin tapauksissa tämä voi merkittävästi nostaa tiedonkeruun nopeutta.

SQL Serverin toimivuuden vuoksi taulukot on jaettava uudelleen yksilöllisesti. Tietokannat, joissa on suuri määrä taulukoita, voivat olla tosi kipuja käsin, mutta komentosarja osuu jokaiseen taulukkoon vastaavassa tietokannassa ja uudelleenrakentaa kaikki indeksit.

Eheyden tarkistaminen [/ Verify]

Jotta tietokanta pysyisi toiminnallisena ja tuottaisi tarkkoja tuloksia, on olemassa lukuisia eheysesineitä, jotka täytyy olla käytössä. Onneksi fyysiset ja / tai loogiset eheysongelmat eivät ole kovin yleisiä, mutta on hyvää käytäntöä ajoittain ajaa eheyden tarkistusprosessia tietokannoissa ja tarkastella tuloksia.

Kun tarkistusprosessi suoritetaan komentojamme läpi, vain virheitä ilmoitetaan, joten uutisia ei ole hyvä uutinen.

Scriptin käyttäminen

SQLMaint-eräkäsikirjoitus on yhteensopiva SQL 2005: n ja uudemman kanssa, ja se on suoritettava koneessa, jossa SQLCMD-työkalu on asennettu (asennettuna osana SQL Server -asennusta). Suosittelemme, että pudotat tämän komentosarjan Windows PATH -muuttujasi (eli C: Windows) asetettuun paikkaan, joten sitä voi kutsua helposti kuten minkä tahansa muun sovelluksen komentoriviltä.

Voit tarkastella ohjetiedostoja kirjoittamalla:

SQLMaint /?

esimerkit

Suorita pienikokoinen ja sitten vahvistus tietokannassa "MyDB" käyttämällä luotettua yhteyttä:

SQLMaint MyDB / Compact / Verify

Reindex-ohjelman suorittaminen ja pienentäminen "MyDB: llä" nimeltä "Special" käyttäen "sa" -käyttäjää salasanalla "123456":

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

Käyttämällä komentosarjan sisäosasta

Vaikka SQLMaint-komentosarjaa voidaan käyttää komentorivin sovelluksena, kun käytät sitä toisen komentosarjan sisällä, sitä täytyy edeltää CALL-avainsanalla.

Esimerkiksi tämä skripti suorittaa kaikki ylläpitotehtävät jokaiselle ei-järjestelmätietokannalle oletusarvon mukaisessa SQL Server -asennuksessa luotetun tunnistuksen avulla:

@ ECO POIS
SETLOCAL EnableExtensions
SET DBList = "% TEMP% DBList.txt"
SqlCmd -E -h-1 -w 300 -Q "SET NoCount ON; SELECT Nimi FROM master.dbo.sysDatabases WHERE Nimi ei IN ('master', 'malli', 'msdb', 'tempdb') ">% DBList%
FOR / F "usebackq tokens = 1" %% i IN (% DBList%) DO (
CALL SQLMaint "%% i" / Compact / Reindex / Verify
ECHO +++++++++++
)
JOS OLET% DBList% DEL / F / Q% DBList%
ENDLOCAL

Lataa SQLMaint Batch Script SysadminGeek.comista