Database
 sql >> Database >  >> RDS >> Database

Migrazione di database SQL con riga di comando

Cosa succede se hai dozzine di database SQL e il backup/ripristino manuale di ogni database richiede troppo tempo per il tuo progetto? Nessun problema! Possiamo creare uno script di un metodo che esporterà e importerà tutti i database contemporaneamente senza bisogno di intervento manuale. Per assistenza con il trasferimento di accessi SQL e stored procedure e visualizzazioni, dai un'occhiata al nostro articolo Migrazione MSSQL con SSMS.

Backup dei database sul server di origine

1. Aprire SSMS (Microsoft SQL Server Management Studio) sul server di origine, accedere all'istanza SQL e aprire una finestra Nuova query. Esegui la seguente query:

SELECT name FROM master.sys.databases

Questo comando produrrà un elenco di tutti i database MSSQL sul tuo server. Per copiare questo elenco, fai clic in un punto qualsiasi dei risultati e usa la scorciatoia da tastiera CTRL+A (Comando + A per utenti Mac) per selezionare tutti i database. Dopo aver evidenziato tutti i database, fare clic con il pulsante destro del mouse e selezionare copia.

2. Apri Blocco note, incolla i risultati ed elimina tutti i database (nel testo del blocco note appena copiato) che NON desideri migrare, oltre a eliminare le seguenti voci:

  • maestro
  • tempdb
  • modello
  • msdb

Queste voci sono i database del sistema e non è necessario copiarli. Assicurati di eliminare tutto tranne in modo esplicito i database di cui devi migrare. Ora dovresti avere un elenco di tutti i database richiesti separati da una riga. cioè

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Salva questo risultato sul computer come C:\databases.txt .

4. Crea una nuova finestra Blocco note, copia/incolla quanto segue nel documento e salvalo come C:\db-backup.bat

mkdir %systemdrive%\dbbackups
for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%\dbbackups\%%a.bak' WITH STATS" )

5. Ora che hai salvato il file come C:\db-backup.bat, vai a Start menu e digita cmd e fai clic con il pulsante destro del mouse su Prompt dei comandi per selezionare Esegui come amministratore .Digita il seguente comando:

cd C:\

E premi invio. Successivamente, digita db-backup.bat e premi invio ancora una volta.

A questo punto, l'esportazione dei tuoi database ha iniziato e vedrai l'avanzamento percentuale di ciascuna esportazione di database (nella foto sotto).

Prendi nota di eventuali database non riusciti, poiché puoi rieseguire il file batch al termine, utilizzando solo i database che potrebbero non essere riusciti. Se il backup dei database non riesce, prendere nota del messaggio di errore visualizzato nel prompt dei comandi, risolvere l'errore modificando il file C:\databases.txt esistente per includere solo i database non riusciti ed eseguire nuovamente db-backup.bat finché tutti i database non vengono esportati correttamente.

Ripristino dei database sul server di destinazione

Ormai hai la cartella C:\dbbackups\ che contiene file .bak per ogni database che desideri migrare. Dovrai copiare la cartella e il tuo C:\databases.txt file al server di destinazione. Esistono numerosi modi per spostare i dati sul server di destinazione; puoi usare USB, Robocopy o FTP. La cartella sull'unità C del server di destinazione dovrebbe essere chiamata C:\dbbackups . È importante nominare con precisione il file poiché il nostro script cercherà i file .bak qui. Assicurati che il server di destinazione contenga anche il tuo file C:\databases.txt, poiché il nostro script cercherà qui i nomi dei database.

1. Apri un Blocco note e copia/incolla quanto segue nel documento e salvalo come C:\db-restore.bat

for /F "tokens=*" %%a in (C:\databases.txt) do (
sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%\dbbackups\%%a.bak' WITH RECOVERY"
)

2. Salva il file come C:\db-restore .pipistrello

3. Passare al menu Start e digitare cmd .

4. Fare clic con il pulsante destro del mouse su Prompt dei comandi e seleziona Esegui come amministratore . Digita il seguente comando:

cd C:\

e premi Invio. Ora digita db-restore.bat e premi Invio.

I tuoi database hanno ora iniziato l'importazione. Verrà visualizzata la percentuale di ripristino di ciascun database e il messaggio "RIPRISTINO DATABASE elaborato con successo ” per ogni database che è stato elaborato correttamente.

Prendi nota di eventuali database non riusciti, poiché puoi rieseguire il file batch al termine, utilizzando solo i database che hanno avuto esito negativo. Se il backup dei database non riesce, prendere nota del messaggio di errore visualizzato nel prompt dei comandi, risolvere l'errore (è possibile modificare il file batch se necessario), modificare C:\databases.txt per includere solo i database non riusciti e ri -esegui db-restore.bat finché tutti i database non vengono esportati correttamente.

Congratulazioni, ora hai eseguito il backup e ripristinato tutti i tuoi database sul nuovo server. In caso di problemi di accesso durante il test delle connessioni SQL sul server di destinazione, fare riferimento a Migrazione degli accessi Microsoft SQL (collegamento di ancoraggio) sezione di questo articolo e segui i passaggi in esso contenuti. Per migrare viste o stored procedure, fare riferimento a Migrazione di viste e stored procedure sezione. Ogni server SQL avrà le sue configurazioni e gli ostacoli da affrontare, ma speriamo che questo articolo ti abbia fornito una solida base per la tua migrazione a Microsoft SQL Server.