Script batch per il backup di tutti i database SQL Server
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 al punto, questo è lo script di backup:
@TO SPENTO
SETLOCALREM Ottieni la data in formato AAAA-MM-GG (presuppone che le impostazioni internazionali siano Stati Uniti)
FOR / F "token = 1,2,3,4 delimi = /" %% A IN ('Data / T') DO SET NowDate = %% D - %% B - %% CREM Crea un elenco di database per il 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 Effettua il backup di ogni database, anteponendo la data al nome file
FOR / F "token = *" %% I IN (% DBList%) DO (
ECHO Backup del database: %% I
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] TO Disk =" D: Backup% NowDate% _ %% I.bak ""
ECO.
)REM Pulisci il file temporaneo
SE ESISTA "% 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
Certo, vorrete personalizzare lo script nel vostro ambiente, ecco cosa dovete fare:
- Se le impostazioni internazionali della tua macchina non sono impostate 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 siete tutti impostati.