Mājas lapa » » Partijas skripts, lai SQL Server datu bāzes uzturēšana būtu vienkārša

    Partijas skripts, lai SQL Server datu bāzes uzturēšana būtu vienkārša

    Papildus dublējumkopiju izveidei ir pieejami arī dažādi SQL Server uzdevumi un funkcijas, kas var uzlabot datu bāzu veiktspēju un uzticamību. Mēs iepriekš esam parādījuši, kā backup SQL Server datu bāzes ar vienkāršu komandrindas skriptu, tādā pašā veidā mēs nodrošinām skriptu, kas ļaus jums viegli veikt kopīgus uzturēšanas uzdevumus.

    Datu bāzes saspiešana / samazināšana [/ Compact]

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

    • Laika gaitā ieraksti tiek pievienoti, dzēsti un atjaunināti, SQL pastāvīgi pieaug un samazinās tabulas, kā arī ģenerē pagaidu datu struktūras, lai veiktu vaicājumu manipulācijas. Lai pielāgotu diska uzglabāšanas vajadzībām, SQL Server palielinās datubāzes lielumu (parasti par 10%), lai datubāzes faila lielums nemainītos. Lai gan tas ir ideāli piemērots veiktspējai, tas var izraisīt atvienošanu ar izmantoto uzglabāšanas telpu, jo, piemēram, ja pievienojat ļoti lielu ierakstu skaitu, kas izraisa datu bāzes augšanu un pēc tam izdzēš šos ierakstus, SQL Server automātiski neatprasīs šo ierakstu diskā.
    • Ja datu bāzēs izmantojat pilnu atgūšanas režīmu, darījumu žurnāla fails (LDF) var augt diezgan liels, īpaši datu bāzēs, kurās ir liels atjauninājumu apjoms..

    Datu bāzes saspiešana (vai samazināšana) atgūs neizmantoto diska vietu. Mazām datu bāzēm (200 MB vai mazāk) tas parasti nebūs ļoti liels, bet lielām datu bāzēm (1 GB vai vairāk) reģenerētā telpa var būt nozīmīga.

    Datu bāzes atjaunošana [/ Reindex]

    Līdzīgi kā pastāvīgi izveidojot, rediģējot un dzēšot failus, var rasties diska fragmentācija, ierakstu ievietošana, atjaunināšana un dzēšana datubāzē var novest pie galda fragmentācijas. Praktiskie rezultāti ir tādi paši, ka lasīšanas un rakstīšanas operācijās ir sasniegts rezultāts. Kaut arī tā nav perfekta analogija, tabulu atjaunošana datubāzē būtībā tos defragmentē. Dažos gadījumos tas var ievērojami palielināt datu izguves ātrumu.

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

    Integritātes pārbaude [/ Verify]

    Lai datu bāze paliktu funkcionāla un sniegtu precīzus rezultātus, ir vairāki integritātes priekšmeti, kas ir jāievieš. Par laimi, fiziskās un / vai loģiskās integritātes problēmas nav ļoti bieži sastopamas, bet ir laba prakse, lai reizēm palaist integritātes verifikācijas procesu savās datubāzēs un pārskatītu rezultātus.

    Kad pārbaudes process tiek izpildīts, izmantojot mūsu skriptu, tiek ziņots tikai par kļūdām, tāpēc jaunumi nav labas ziņas.

    Izmantojot skriptu

    SQLMaint partijas skripts ir saderīgs ar SQL 2005 un augstāku, un tas jādarbina iekārtā, kurā ir instalēts SQLCMD rīks (instalēts kā daļa no SQL Server instalācijas). Ieteicams šo skriptu ievietot vietā, kas iestatīta jūsu Windows PATH mainīgajā (t.i., C: Windows), lai to varētu viegli saukt par jebkuru citu programmu no komandrindas.

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

    SQLMaint /?

    Piemēri

    Lai palaistu kompaktu un pēc tam pārbaudītu datubāzē “MyDB”, izmantojot uzticamu savienojumu:

    SQLMaint MyDB / Kompakts / Verificēt

    Lai palaistu reindeksu un pēc tam kompaktu uz “MyDB” nosauktajā instancē “Special”, izmantojot “sa” lietotāju ar paroli “123456”:

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

    Izmantojot partijas skripta iekšpusi

    Lai gan SQLMaint partijas skriptu var izmantot kā lietojumprogrammu no komandrindas, ja to izmantojat citā partijas skripta iekšienē, pirms tā jāizmanto CALL atslēgvārds.

    Piemēram, šis skripts vada visus uzturēšanas uzdevumus katrā ne 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 NoCount ON; SELECT Name NO master.dbo.sysDatabāzes WHERE Name Not IN ('master', 'modelis', 'msdb', 'tempdb') ">% DBList%
    FOR / F “usebackq žetoni = 1” %% i IN (% DBList%) DO (
    CALL SQLMaint “%% i” / Compact / Reindex / Verify
    ECHO +++++++++++
    )
    IF EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Lejupielādējiet SQLMaint partijas skriptu no SysadminGeek.com