Script batch per il backup di tutti i database SQL Server

Sommario:

Script batch per il backup di tutti i database SQL Server
Script batch per il backup di tutti i database SQL Server

Video: Script batch per il backup di tutti i database SQL Server

Video: Script batch per il backup di tutti i database SQL Server
Video: iOS 4.0.2/4.1/4.2.1 Jailbreak Tutorial (Working in 2022) - YouTube 2024, Maggio
Anonim

Abbiamo già spiegato come eseguire il backup di un database SQL Server dalla riga di comando, quindi cosa succede se si desidera eseguire il backup di tutti i database contemporaneamente? È possibile creare uno script batch che esegua il comando di backup per ciascun database, ma questo script dovrebbe essere aggiornato ogni volta che viene aggiunto o rimosso un database. Inoltre, i backup del database verranno aggiunti a un unico file che crescerà in base alla dimensione del nuovo backup ogni volta che viene eseguito. Invece, nel vero modo "impostalo e dimenticalo", creeremo uno script batch che si adatterà al tuo SQL Server man mano che i nuovi database verranno aggiunti e rimossi.

Per arrivare dritto al punto, questo è lo script di backup:

@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

Supponendo che la data sia 1/13/2009 e si disponga di 3 database denominati "MyDB", "AnotherDB" e "DB Name with Spaces", lo script produrrà 3 file nella posizione di backup specificata:

  • 2009-01-13_AnotherDB.bak
  • 2009-01-13_DB Nome con Spaces.bak
  • 2009-01-13_MyDB.bak

Personalizzazione ed esecuzione dello script batch

Ovviamente, vorrete personalizzare lo script nel vostro ambiente, ecco cosa dovete fare:

  • Se la locale della tua macchina non è impostata negli Stati Uniti, il comando 'Data / T' potrebbe non restituire la data nel formato "Tue 01/13/2009". Se questo è il caso, la variabile NowDate non produrrà il formato desiderato e dovrebbe essere regolata. (1 posto)
  • Modificare "MyServer" come nome del server SQL (aggiungere il nome dell'istanza, se applicabile). (2 posti)
  • I database denominati "master", "model", "msdb" e "tempdb" sono database forniti con SQL Server. È possibile aggiungere ulteriori nomi di database a questo elenco se non si desidera che vengano sottoposti a backup. (1 posto)
  • Cambiare il percorso di backup da "D: Backup" alla posizione in cui si desidera archiviare i file di backup del database.

Dopo aver personalizzato lo script batch, programmarlo per l'esecuzione tramite l'Utilità di pianificazione di Windows come utente con diritti di amministratore e tutto è pronto.

Consigliato: