Hjemmeside » hvordan » Batch Script til at gøre SQL Server Database Maintenance Simple

    Batch Script til at gøre SQL Server Database Maintenance Simple

    Ud over at oprette sikkerhedskopier er der en række opgaver og funktioner, som SQL Server stiller til rådighed, som både kan forbedre ydeevnen og pålideligheden af ​​dine databaser. Vi har tidligere vist dig, hvordan du sikkerhedskopierer SQL Server-databaser med et simpelt kommandolinjeskript, så vi på samme måde giver et script, der giver dig mulighed for nemt at udføre almindelige vedligeholdelsesopgaver.

    Komprimere / krympe en database [/ Compact]

    Der er flere faktorer, der bidrager til den fysiske diskplads, en SQL Server-database bruger. Bare for at nævne nogle få:

    • Over tid, efterhånden som optegnelser tilføjes, slettes og opdateres, vokser SQL konstant og krymper tabeller samt genererer midlertidige datastrukturer til udførelse af forespørgselsmanipulationer. For at imødekomme disklagringsbehovet vil SQL Server øge databasens størrelse (normalt med 10%) efter behov, så databasens filstørrelse ændres ikke konstant. Selv om dette er ideelt til ydeevne, kan det medføre en afbrydelse af det anvendte lagerplads, fordi hvis du for eksempel tilføjer et meget stort antal poster, der får databasen til at vokse og efterfølgende sletter disse poster, vil SQL Server ikke automatisk genvinde denne diskplads.
    • Hvis du bruger fuld gendannelsesfunktion i dine databaser, kan transaktionslogfilen (LDF) vokse ganske stor, især på databaser med et stort antal opdateringer.

    Komprimering (eller krympning) databasen vil genvinde ubrugt diskplads. For små databaser (200 MB eller mindre) vil dette normalt ikke være meget, men for store databaser (1 GB eller mere) kan det regenererede rum være betydeligt.

    Reindexing a Database [/ Reindex]

    Meget som at konstant oprette, kan redigering og sletning af filer føre til diskfragmentering, indsættelse, opdatering og sletning af poster i en database, der kan føre til tabelfragmentering. De praktiske resultater er de samme, fordi læsnings- og skriveoperationer lider under et præstations hit. Selvom det ikke er en perfekt analogi, deframterer de i bundfaldet tabellerne i en database. I nogle tilfælde kan dette betydeligt øge hastigheden af ​​data hentning.

    På grund af den måde, SQL Server fungerer på, skal tabellerne genindføres individuelt. For databaser med et stort antal tabeller kan dette være reelt smerte at gøre manuelt, men vores script rammer hvert bord i den respektive database og genopbygger alle indekserne.

    Bekræftende integritet [/ Bekræft]

    For at en database skal forblive både funktionel og producere nøjagtige resultater, er der mange integritetstyper, som skal være på plads. Heldigvis er fysiske og / eller logiske integritetsproblemer ikke meget almindelige, men det er god praksis at lejlighedsvis køre integritetsverifikationsprocessen på dine databaser og gennemgå resultaterne.

    Når verificeringsprocessen køres gennem vores script, rapporteres kun fejl, så ingen nyheder er gode nyheder.

    Brug af scriptet

    SQLMaint-batch scriptet er kompatibelt med SQL 2005 og højere og skal køres på en maskine, der har installeret SQLCMD-værktøjet (installeret som en del af SQL Server-installationen). Det anbefales at droppe dette script til et sted i din Windows PATH-variabel (dvs. C: Windows), så det let kan kaldes som enhver anden applikation fra kommandolinjen.

    For at se hjælpoplysningerne skal du blot indtaste:

    SQLMaint /?

    eksempler

    At køre en kompakt og derefter en bekræftelse på databasen "MyDB" ved hjælp af en betroet forbindelse:

    SQLMaint MyDB / Compact / Verify

    At køre en reindex og derefter komprimere på "MyDB" på den nævnte instans "Special" ved hjælp af "sa" brugeren med adgangskode "123456":

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

    Brug fra inde i et batch script

    Mens SQLMaint-batch scriptet kan bruges som et program fra kommandolinjen, når du bruger det inde i et andet batch script, skal det foregå med CALL-søgeordet.

    Eksempelvis kører dette script alle vedligeholdelsesopgaver på hver ikke-systemdatabase på en standard SQL Server-installation ved hjælp af betroet godkendelse:

    @ECHO OFF
    SETLOCAL EnableExtensions
    SET DBList = "% TEMP% DBList.txt"
    SqlCmd -E -h-1 -w 300 -Q "SET NoCount ON; SELECT Navn FRA master.dbo.sysDatabases WHERE Navn Ikke IN ('master', 'model', 'msdb', 'tempdb') ">% DBList%
    FOR / F "usebackq tokens = 1" %% i IN (% DBList%) DO (
    CALL SQLMaint "%% i" / Compact / Reindex / Verify
    EKKO +++++++++++
    )
    IF EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Download SQLMaint Batch Script fra SysadminGeek.com