sql >> Database >  >> RDS >> Database

Migratie van SQL-databases met opdrachtregel

Wat als u tientallen SQL-databases heeft en het handmatig back-uppen/herstellen van elke database te tijdrovend is voor uw project? Geen probleem! We kunnen een methode uitschrijven die alle databases tegelijk zal exporteren en importeren zonder handmatige tussenkomst. Raadpleeg ons artikel MSSQL-migratie met SSMS voor hulp bij het overzetten van SQL-aanmeldingen en opgeslagen procedures en weergaven.

Back-ups maken van databases op de bronserver

1. Open SSMS (Microsoft SQL Server Management Studio) op de bronserver, meld u aan bij de SQL-instantie en open een venster Nieuwe query. Voer de volgende query uit:

SELECT name FROM master.sys.databases

Met deze opdracht wordt een lijst met alle MSSQL-databases op uw server weergegeven. Om deze lijst te kopiëren, klikt u ergens in de resultaten en gebruikt u de sneltoets CTRL+A (Command + A voor Mac-gebruikers) om alle databases te selecteren. Nadat u alle databases hebt gemarkeerd, klikt u met de rechtermuisknop en selecteert u kopiëren.

2. Open Kladblok, plak uw resultaten in en verwijder alle databases (in de nieuw gekopieerde Kladblok-tekst) die u NIET wilt migreren, evenals de volgende vermeldingen:

  • meester
  • tempdb
  • model
  • msdb

Deze vermeldingen zijn de databases van het systeem en kopiëren is niet nodig. Zorg ervoor dat u alles verwijdert, behalve de databases die u moet migreren. U zou nu een lijst met alle vereiste databases moeten hebben, gescheiden door een regel. d.w.z.

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Sla dit resultaat op de computer op als C:\databases.txt .

4. Maak een nieuw Kladblok-venster, kopieer/plak het volgende in het document en sla het op als 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. Nu je het bestand hebt opgeslagen als C:\db-backup.bat, ga je naar de Start menu en typ cmd en klik met de rechtermuisknop op Opdrachtprompt om Als administrator uitvoeren . te selecteren .Typ het volgende commando:

cd C:\

En druk op enter. Typ daarna db-backup.bat en druk nogmaals op enter.

Op dit punt zijn uw databases begonnen met exporteren en ziet u de procentuele voortgang van elke database-export (hieronder afgebeeld).

Let op eventuele mislukte databases, aangezien u het batchbestand opnieuw kunt uitvoeren als het klaar is, met alleen de databases die mogelijk zijn mislukt. Als de databases geen back-up kunnen maken, let dan op het foutbericht dat wordt weergegeven in de opdrachtprompt, verhelp de fout door het bestaande C:\databases.txt-bestand te wijzigen zodat alleen de mislukte databases worden opgenomen en voer db-backup.bat opnieuw uit totdat alle databases succesvol zijn geëxporteerd.

Databases herstellen naar de doelserver

Je hebt nu de map C:\dbbackups\ die .bak-bestanden bevat voor elke database die u wilt migreren. U moet de map en . kopiëren uw C:\databases.txt bestand naar de doelserver. Er zijn talloze manieren om uw gegevens naar de doelserver te verplaatsen; u kunt USB, Robocopy of FTP gebruiken. De map op de C-schijf van de doelserver moet C:\dbbackups . heten . Het is belangrijk om het bestand een nauwkeurige naam te geven, omdat ons script hier naar de .bak-bestanden zoekt. Zorg ervoor dat de doelserver ook uw C:\databases.txt-bestand heeft, aangezien ons script hier naar de databasenamen zal zoeken.

1. Open een Kladblok en kopieer/plak het volgende in het document en sla het op als 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. Sla het bestand op als C:\db-restore .bat

3. Navigeer naar het menu Start en typ cmd .

4. Klik met de rechtermuisknop op Opdrachtprompt en selecteer Als administrator uitvoeren . Typ het volgende commando:

cd C:\

en druk op Enter. Typ nu db-restore.bat en druk op Enter.

Uw databases zijn nu geïmporteerd. U ziet het percentage van het herstel van elke database en het bericht "HERSTEL DATABASE succesvol verwerkt ” voor elke database die met succes is verwerkt.

Let op eventuele mislukte databases, aangezien u het batchbestand opnieuw kunt uitvoeren als het klaar is, met alleen de databases die zijn mislukt. Als er geen back-up van de databases kan worden gemaakt, let dan op het foutbericht dat wordt weergegeven in de opdrachtprompt, verhelp de fout (u kunt het batchbestand indien nodig wijzigen), wijzig C:\databases.txt zodat alleen de mislukte databases worden opgenomen en -voer db-restore.bat uit totdat alle databases succesvol zijn geëxporteerd.

Gefeliciteerd, u hebt nu een back-up gemaakt van al uw databases en deze teruggezet op de nieuwe server. Als u inlogproblemen hebt tijdens het testen van de SQL-verbindingen op de doelserver, raadpleegt u de Migreren van Microsoft SQL-aanmeldingen (ankerlink) van dit artikel en volg de stappen daarin. Om weergaven of opgeslagen procedures te migreren, raadpleegt u de Migratie van weergaven en opgeslagen procedures sectie. Elke SQL-server heeft zijn eigen configuraties en obstakels, maar we hopen dat dit artikel u een sterke basis heeft gegeven voor uw Microsoft SQL Server-migratie.


  1. Django JSONVeldfiltering

  2. Standalone MySQL-server

  3. PostgreSQL-implementatie en onderhoud met Ansible

  4. Voordelen van MySQLi boven MySQL