Homepage » come » Script batch per il backup di tutti i database SQL Server

    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
    SETLOCAL

    REM 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 - %% C

    REM 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.