If-Koubou

Partijas skripts, lai padarītu SQL Server datu bāzes uzturēšanu vienkāršu

Partijas skripts, lai padarītu SQL Server datu bāzes uzturēšanu vienkāršu (Kā)

Papildus rezerves kopiju izveidei ir dažādi uzdevumi un funkcijas, kuras nodrošina SQL Server, kas var uzlabot datu bāzu darbību un uzticamību. Mēs iepriekš esam parādījuši, kā SQL Server datu bāzēs izveidot rezerves komandrindas skriptu, tādā veidā mēs piedāvājam skriptu, kas ļaus jums viegli izpildīt kopējus tehniskās apkopes uzdevumus.

Datubāzes saspiešana / saīsināšana [/ Compact]

Ir vairāki faktori, kas veicina fizisko diska vietu, kuru izmanto SQL Server datu bāze. Vienkārši nosaukt dažus:

  • Laika posmā, kad ieraksti tiek pievienoti, dzēsti un atjaunināti, SQL nepārtraukti pieaug un tabulas samazina, kā arī izveido pagaidu datu struktūras, lai veiktu vaicājumu manipulācijas. Lai pielāgotos diska uzglabāšanas vajadzībām, SQL Server palielinās datubāzes lielumu (parasti par 10%), ja nepieciešams, lai datubāzes faila lielums nemitīgi mainītos. Lai gan tas ir ideāli piemērots veiktspējai, tas var izraisīt atvienošanu no izmantotās atmiņas vietas, jo, piemēram, ja pievienojat ļoti lielu skaitu ierakstu, kas izraisa datu bāzes pieaugumu, un pēc tam šie ieraksti tiek dzēsti, SQL Server automātiski to neatjauno diska vieta.
  • Ja datubāzēs izmantojat pilno atkopšanas režīmu, transakcijas žurnāla fails (LDF) var pieaugt diezgan lielā apjomā, īpaši datubāzēs ar lielu atjauninājumu skaitu.

Kompakts (vai samazinās) datu bāze atgūs neizmantoto diska vietu. Mazām datu bāzēm (200 MB vai mazāka) parasti tas nebūs ļoti liels, bet lielām datu bāzēm (1 GB vai vairāk) atgūstamā vieta var būt ievērojama.

Reindexing a Database [/ Reindex]

Līdzīgi kā pastāvīgu failu izveidošana, rediģēšana un dzēšana var izraisīt diska fragmentāciju, datu bāzes ierakstu ievietošana, atjaunināšana un dzēšana var izraisīt galdu sadrumstalotību. Praktiskie rezultāti ir tādi paši, ka lasīšanas un rakstīšanas operācijas cieš no rezultātu sasniegšanas. Lai gan tā nav perfekta analoģija, tabulu pārvēršana indeksē datubāzē tos sākotnēji defragē. Dažos gadījumos tas var būtiski palielināt datu izguves ātrumu.

Sakarā ar to, kā darbojas SQL Server, tabulas jāindeksē atsevišķi. Datu bāzēm ar lielu tabulu skaitu var būt reālas sāpes rīkoties manuāli, bet mūsu skripts pārlūko katru tabulu attiecīgajā datubāzē un pārveido visus indeksus.

Integritātes pārbaude [/ Verify]

Lai datu bāze paliktu funkcionāla un sniegtu precīzus rezultātus, pastāv daudzi viengabalainības elementi. Par laimi, fiziskās un / vai loģiskās integritātes problēmas nav ļoti izplatītas, taču ir laba prakse laiku pa laikam vadīt integritātes verifikācijas procesu jūsu datubāzēs un pārskatīt rezultātus.

Kad verifikācijas process tiek izpildīts caur mūsu skriptu, tiek ziņots tikai par kļūdām, tādēļ ziņas nav labas ziņas.

Izmantojot skriptu

SQLMaint partijas skripts ir saderīgs ar SQL 2005 un jaunāku versiju, un tas jāiedarbina uz mašīnas, kurā ir instalēts SQLCMD rīks (instalēts kā daļa no SQL Server instalācijas). Ieteicams šo skriptu nomest vietā, kas noteikta jūsu Windows PATH mainīgā (t.i., C: Windows), lai to varētu viegli izsaukt kā jebkuru citu no komandrindas lietojumprogrammu.

Lai apskatītu palīdzības informāciju, vienkārši ievadiet:

SQLMaint /?

Piemēri

Lai palaistu kompaktdisku un pēc tam verificētu datu bāzē "MyDB", izmantojot uzticamu savienojumu:

SQLMaint MyDB / Kompakts / pārbaudīt

Lai palaistu reindeksu un pēc tam kompaktdisku "MyDB" uz nosaukto gadījumu "Īpašais", izmantojot "sa" lietotāju ar paroli "123456":

SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Reindeks / Kompakts

Izmantojot no partijas skripta iekšpusi

Kaut arī SQLMaint partijas skriptu var izmantot, piemēram, komandrindas lietojumprogrammu, ja to izmantojat cita partijas skripta iekšpusē, tai pirms tam jābūt ar CALL atslēgvārdu.

Piemēram, šis skripts izpilda visus tehniskās apkopes uzdevumus visās sistēmās, kas nav sistēmas datu bāzē, noklusējuma SQL Server instalācijā, izmantojot uzticamu autentifikāciju:

@ECHO OFF
SETLOCAL EnableExtensions
SET DBList = "% TEMP% DBList.txt"
SqlCmd -E -h-1 -w 300 -Q "SET NrCount ON; SELECT NAME FROM master.dbo.sysDatabase WHERE nosaukums nav ("master", "modelis", "msdb", "tempdb") ">%% DBList%
FOR / F "usebackq tokens = 1" %% i IN (% DBList%) DO (
CALL SQLMaint "%% i" / Compact / Reindex / Verify
ECHO +++++++++++
)
Ja eksist%% bloks% DEL / F / Q% DBList%
ENDLOCAL

Lejupielādējiet SQLMaint Batch Script no SysadminGeek.com