sql >> Databasteknik >  >> RDS >> Database

SQL-databasmigrering med kommandorad

Vad händer om du har dussintals SQL-databaser och att manuellt säkerhetskopiera/återställa varje databas är för tidskrävande för ditt projekt? Inga problem! Vi kan skriva ut en metod som kommer att exportera och importera alla databaser på en gång utan att behöva manuellt ingripa. För hjälp med att överföra SQL-inloggningar och lagrade procedurer och vyer, ta en titt på vår MSSQL-migrering med SSMS-artikel.

Säkerhetskopiera databaser på källservern

1. Öppna SSMS (Microsoft SQL Server Management Studio) på källservern, logga in på SQL-instansen och öppna ett nytt frågefönster. Kör följande fråga:

SELECT name FROM master.sys.databases

Detta kommando kommer att mata ut en lista över alla MSSQL-databaser på din server. För att kopiera ut den här listan, klicka var som helst i resultaten och använd kortkommandot CTRL+A (Kommando + A för Mac-användare) för att välja alla databaser. Efter att ha markerat alla databaser högerklicka och välj kopiera.

2. Öppna Anteckningar, klistra in dina resultat och ta bort alla databaser (i den nyligen kopierade anteckningsblockstexten) som du INTE vill migrera, samt ta bort följande poster:

  • mästare
  • tempdb
  • modell
  • msdb

Dessa poster är systemets databaser, och det är inte nödvändigt att kopiera dem. Se till att ta bort allt förutom de databaser du behöver för att migrera. Du bör nu ha en lista över alla nödvändiga databaser separerade med en rad. dvs.

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Spara detta resultat på datorn som C:\databases.txt .

4. Skapa ett nytt Notepad-fönster, kopiera/klistra in följande i dokumentet och spara det som 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 när du har sparat filen som C:\db-backup.bat, navigera till Start menyn och skriv cmd och högerklicka på Kommandotolken för att välja Kör som administratör .Skriv följande kommando:

cd C:\

Och tryck enter. Efteråt skriver du db-backup.bat och trycker på enter igen.

Vid det här laget har dina databaser börjat exporteras och du kommer att se den procentuella utvecklingen av varje databasexport (bilden nedan).

Notera eventuella misslyckade databaser, eftersom du kan köra batchfilen igen när den är klar, med endast de databaser som kan ha misslyckats. Om databaserna inte kan säkerhetskopieras, notera felmeddelandet som visas i kommandotolken, åtgärda felet genom att ändra den befintliga C:\databases.txt-filen så att den bara inkluderar de misslyckade databaserna och köra db-backup.bat igen tills alla databaser har exporterats.

Återställer databaser till målservern

Vid det här laget har du mappen C:\dbbackups\ som innehåller .bak-filer för varje databas du vill migrera. Du måste kopiera mappen och din C:\databases.txt filen till destinationsservern. Det finns många sätt att flytta din data till destinationsservern; du kan använda USB, Robocopy eller FTP. Mappen på C-enheten på målservern ska heta C:\dbbackups . Det är viktigt att namnge filen korrekt eftersom vårt skript kommer att leta efter .bak-filerna här. Se till att målservern också har din C:\databases.txt-fil, eftersom vårt skript kommer att leta efter databasnamnen här.

1. Öppna ett anteckningsblock och kopiera/klistra in följande i dokumentet och spara det som 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. Spara filen som C:\db-restore .bat

3. Navigera till Start-menyn och skriv cmd .

4. Högerklicka på Kommandotolken och välj Kör som administratör . Skriv följande kommando:

cd C:\

och tryck på Enter. Skriv nu db-restore.bat och tryck på Retur.

Dina databaser har nu börjat importeras. Du kommer att se procentandelen av varje databas återställning och meddelandet "ÅTERSTÄLL DATABAS har bearbetats framgångsrikt ” för varje databas som har bearbetats framgångsrikt.

Notera eventuella misslyckade databaser, eftersom du kan köra batchfilen igen när den är klar, med endast de databaser som har misslyckats. Om databaserna inte kan säkerhetskopieras, notera felmeddelandet som visas i kommandotolken, åtgärda felet (du kan ändra batchfilen vid behov), ändra C:\databases.txt så att endast de misslyckade databaserna inkluderas och åter -kör db-restore.bat tills alla databaser har exporterats.

Grattis, du har nu säkerhetskopierat och återställt alla dina databaser till den nya servern. Om du har några inloggningsproblem när du testar SQL-anslutningarna på målservern, se Migrera Microsoft SQL-inloggningar (ankarlänk) avsnittet i den här artikeln och följ stegen i den. För att migrera vyer eller lagrade procedurer, se Migrera vyer och lagrade procedurer sektion. Varje SQL-server kommer att ha sina konfigurationer och hinder att möta, men vi hoppas att den här artikeln har gett dig en stark grund för din Microsoft SQL Server-migrering.


  1. Hur konverterar man 1985-02-07T00:00:00.000Z (ISO8601) till ett datumvärde i Oracle?

  2. Tabellexempel och andra metoder för att få slumpmässiga tuplar

  3. Jämför PHP-databasabstraktionslager och CRUD-plugins

  4. SQL Server:Dynamisk where-klausul