Olemme jo käsitelleet SQL Server -tietokannan varmuuskopion komentoriviltä, joten mitä haluat varmuuskopioida kaikki tietokannasi kerralla? Voit luoda komentosarjan, joka suorittaa kunkin tietokannan varmuuskopiokomennon, mutta tämä skripti olisi päivitettävä aina, kun tietokantaan lisätään tai poistetaan. Lisäksi tietokannan varmuuskopioita lisätään yhteen tiedostoon, joka kasvaa uuden varmuuskopion koko ajan aina, kun sitä ajetaan. Sen sijaan, todellisessa "asettaa ja unohda se" -mallin, luomme komentosarjan, joka sopeutuu SQL Serverisi, kun uusia tietokantoja lisätään ja poistetaan.
Päästäkseen oikeaan kohtaan tämä on varmuuskopiokoodi:
@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
Jos päivämäärä on 1/13/2009 ja sinulla on 3 tietokantaa nimeltään "MyDB", "AnotherDB" ja "DB Name with Spaces", käsikirjoitus tuottaa 3 tiedostoa varmuuskopiointipaikassa:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Nimi Spaces.bak
- 2009-01-13_MyDB.bak
Batch Scriptin mukauttaminen ja suorittaminen
Tietenkin, haluat muokata käsikirjoituksen ympäristöön, joten tässä on sinun tehtäväsi:
- Jos laitteen sijainti ei ole asetettu Yhdysvaltoihin, komento 'Date / T' ei ehkä palauta päivämäärää muodossa "Tue 01/13/2009". Jos näin on, NowDate-muuttuja ei tuota haluttua muotoa ja sitä pitäisi säätää. (1 paikka)
- Muuta "MyServer" SQL-palvelimen nimenä (lisää tarvittaessa esiintymän nimi). (2 paikat)
- Tietokannat nimeltä "master", "malli", "msdb" ja "tempdb" ovat tietokantoja, jotka toimitetaan SQL Serverin kanssa. Voit lisätä tähän tietokantaan muita tietokannan nimiä, jos et halua niiden varmuuskopiointia. (1 paikka)
- Vaihda varmuuskopiointipaikka D: varmuuskopioinnista sijaintiin, johon haluat tallentaa tietokannan varmuuskopiotiedostot.
Kun olet määrittänyt eräkäsikirjoituksen, aseta se toimimaan Windows Task Scheduler -ohjelman avulla käyttäjänä, jolla on järjestelmänvalvojan oikeudet ja olet kaikki asetettu.