Skip to main content

Paketinis scenarijus, skirtas visų jūsų SQL serverio duomenų bazių atsarginėms kopijoms

Paketinis scenarijus, skirtas visų jūsų SQL serverio duomenų bazių atsarginėms kopijoms

Geoffrey Carr

Mes jau aptarėme, kaip atsarginę SQL Server duomenų bazę kopijuoti iš komandinės eilutės, taigi, jei norite vienu metu kopijuoti visas savo duomenų bazes? Galite sukurti paketinį scenarijų, kuris paleidžia kiekvienos duomenų bazės atsarginę komandą, bet šis scenarijus turėtų būti atnaujinamas kiekvieną kartą, kai pridedama arba pašalinama duomenų bazė. Be to, duomenų bazės atsarginės kopijos bus pridėtos prie vieno failo, kuris kaskart padidės pagal naujos atsarginės kopijos dydį. Vietoj to, tiesiškai "nustatydami ir pamirsdami" madą, mes sukursime partijos scenarijų, kuris prisitaikys prie jūsų "SQL Server", kai bus pridėtos ir pašalintos naujos duomenų bazės.

Norėdami susipažinti su tašku, tai atsarginis scenarijus:

@ECHO OFF SETLOCAL

REM Get date in format YYYY-MM-DD (assumes the locale is the United States) FOR /F “tokens=1,2,3,4 delims=/ ” %%A IN (‘Date /T’) DO SET NowDate=%%D-%%B-%%C

REM Build a list of databases to backup SET DBList=%SystemDrive%SQLDBList.txt SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)” > “%DBList%”

REM Backup each database, prepending the date to the filename FOR /F “tokens=*” %%I IN (%DBList%) DO ( ECHO Backing up database: %%I SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%%I] TO Disk=’D:Backup%NowDate%_%%I.bak'” ECHO. )

REM Clean up the temp file IF EXIST “%DBList%” DEL /F /Q “%DBList%”

ENDLOCAL

Darant prielaidą, kad data yra 2009 m. Rugsėjo 1 d., Ir turite 3 duomenų bazes "MyDB", "AnotherDB" ir "DB Name with Spaces", scenarijus sukuria 3 failus nurodytoje atsarginėje vietoje:

  • 2009-01-13_AnotherDB.bak
  • 2009-01-13_DB Vardas su Spaces.bak
  • 2009-01-13_MyDB.bak

Parinkto scenarijaus pritaikymas ir paleidimas

Žinoma, jūs norėsite pritaikyti scenarijų savo aplinkai, todėl čia turėtumėte daryti:

  • Jei jūsų kompiuterio lokalė nėra nustatyta JAV, komanda Date / T gali negrąžinti datos formatu "Tue 13/01/2009". Tokiu atveju kintamasis NowDate nepateiks norimo formato ir turėtų būti koreguojamas. (1 vieta)
  • Pakeiskite "MyServer" kaip savo SQL Server pavadinimą (jei reikia, pridėkite pavadinimo pavadinimą). (2 vietos)
  • Duomenų bazės "master", "modelis", "msdb" ir "tempdb" yra duomenų bazės, kurios siunčiamos kartu su "SQL Server". Šiame sąraše galite pridėti papildomų duomenų bazių pavadinimų, jei nenorite, kad jie būtų atsarginę kopiją. (1 vieta)
  • Pakeiskite atsarginę vietovę iš "D: Backup" į vietą, kurioje norite saugoti duomenų bazės atsargines kopijas.

Kai pritaikysite partijos scenarijų, planuokite ją paleisti per "Windows Task Scheduler" kaip vartotoją su administratoriaus teisėmis, o jūs visi esate nustatyti.

Link
Plus
Send
Send
Pin