Hemsida » hur » Batch Script för att göra SQL Server Database Maintenance Simple

    Batch Script för att göra SQL Server Database Maintenance Simple

    Förutom att skapa säkerhetskopior finns det en rad olika uppgifter och funktioner som SQL Server gör tillgängligt, vilket både kan förbättra prestanda och tillförlitlighet hos dina databaser. Vi har tidigare visat dig hur du säkerhetskopierar SQL Server-databaser med ett enkelt kommandoradsskript så att vi på samma sätt tillhandahåller ett skript som gör att du enkelt kan utföra vanliga underhållsuppgifter.

    Komprimera / krympa en databas [/ Compact]

    Det finns flera faktorer som bidrar till det fysiska diskutrymmet som en SQL Server-databas använder. Bara för att nämna några:

    • Med tiden som poster läggs till, raderas och uppdateras, växer SQL ständigt och krympar tabeller samt genererar temporära datastrukturer för att utföra fråga manipuleringar. För att tillgodose behovet av disklagring kommer SQL Server att öka databasens storlek (vanligtvis med 10%) efter behov så att databasfilstorleken inte ständigt ändras. Även om detta är idealiskt för prestanda kan det leda till att du kopplar bort lagringsutrymmet som används, för att om du till exempel lägger till ett mycket stort antal poster som gör att databasen växer och senare raderar dessa poster, kommer SQL Server inte automatiskt att återkräva detta disk utrymme.
    • Om du använder Full Recovery Mode i dina databaser kan transaktionsloggen (LDF) växa ganska stor, särskilt på databaser med en stor mängd uppdateringar.

    Komprimering (eller krympning) databasen kommer att återvinna oanvänd diskutrymme. För små databaser (200 MB eller mindre) brukar det inte vara så mycket, men för stora databaser (1 GB eller mer) kan det återskapade utrymmet vara betydande.

    Reindexering av en databas [/ Reindex]

    Såsom att ständigt skapa kan redigering och borttagning av filer leda till fragmentering av skivor, infoga, uppdatera och radera poster i en databas kan leda till tabellfragmentering. De praktiska resultaten är desamma, eftersom läs- och skrivoperationer drabbas av en prestationsträff. Även om det inte är en perfekt analogi, defragmenterar de reindexerande tabellerna i en databas. I vissa fall kan detta väsentligt öka hastigheten för datainsamling.

    På grund av hur SQL Server fungerar måste tabellerna reindexeras individuellt. För databaser med ett stort antal tabeller kan detta vara verkligt smärt att göra manuellt, men vårt skript träffar varje tabell i respektive databas och återuppbygger alla index.

    Verifierande integritet [/ Verifiera]

    För att en databas ska förbli både funktionell och producera exakta resultat finns det många integritetsobjekt som måste vara på plats. Lyckligtvis är fysiska och / eller logiska integritetsproblem inte så vanliga, men det är bra att du ibland kör integritetsverifieringsprocessen i dina databaser och granska resultaten.

    När verifieringsprocessen körs genom vårt skript rapporteras bara fel, så ingen nyhet är bra nyheter.

    Använda scriptet

    SQLMaint-batch-skriptet är kompatibelt med SQL 2005 och högre och måste köras på en maskin som har SQLCMD-verktyget installerat (installerat som en del av SQL Server-installationen). Det rekommenderas att du släpper det här skriptet till en plats som anges i din Windows PATH-variabel (dvs C: Windows) så att den lätt kan kallas som vilken som helst annan applikation från kommandoraden.

    För att visa hjälpinformationen, skriv bara in:

    SQLMaint /?

    exempel

    För att köra en kompakt och sedan en verifiering i databasen "MyDB" med en pålitlig anslutning:

    SQLMaint MyDB / Compact / Verifiera

    För att köra en reindex och sedan komprimera på "MyDB" på namnet "Special" med "sa" -användaren med lösenordet "123456":

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

    Användning från insidan av ett batchskript

    Medan SQLMaint-batch-skriptet kan användas som ett program från kommandoraden, måste du föregås av CALL-nyckelordet när du använder det inuti ett annat batch-script.

    Till exempel körs det här skriptet alla underhållsuppgifter på varje icke-systemdatabas på en standard SQL Server-installation med hjälp av betrodd autentisering:

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

    Hämta SQLMaint Batch Script från SysadminGeek.com