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

SQL-databasemigrering med kommandolinje

Hvad hvis du har snesevis af SQL-databaser og manuelt sikkerhedskopiering/gendannelse af hver database er for tidskrævende for dit projekt? Intet problem! Vi kan scripte en metode, der eksporterer og importerer alle databaser på én gang uden manuel indgriben. For at få hjælp til at overføre SQL-logins og lagrede procedurer og visninger, tag et kig på vores artikel om MSSQL-migrering med SSMS.

Sikkerhedskopiering af databaser på kildeserveren

1. Åbn SSMS (Microsoft SQL Server Management Studio) på kildeserveren, log på SQL-instansen og åbn et nyt forespørgsel-vindue. Kør følgende forespørgsel:

SELECT name FROM master.sys.databases

Denne kommando udsender en liste over alle MSSQL-databaser på din server. For at kopiere denne liste ud, skal du klikke hvor som helst i resultaterne og bruge tastaturgenvejen CTRL+A (Kommando + A til Mac-brugere) til at vælge alle databaser. Efter at have fremhævet alle databaserne, skal du højreklikke og vælge kopi.

2. Åbn Notesblok, indsæt dine resultater og slet alle databaser (i den nyligt kopierede notesbloktekst), du IKKE ønsker at migrere, samt slet følgende poster:

  • mester
  • tempdb
  • model
  • msdb

Disse poster er systemets databaser, og det er ikke nødvendigt at kopiere dem. Sørg for at slette alt undtagen de databaser, du skal migrere. Du skulle nu have en liste over alle nødvendige databaser adskilt af en linje. dvs.

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Gem dette resultat på computeren som C:\databases.txt .

4. Opret et nyt Notesblok-vindue, kopier/indsæt følgende i dokumentet og gem 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 hvor du har gemt filen som C:\db-backup.bat, skal du navigere til Start menu og skriv cmd og højreklik på Kommandoprompt for at vælge Kør som administrator .Skriv følgende kommando:

cd C:\

Og tryk enter. Indtast derefter db-backup.bat og tryk på enter igen.

På dette tidspunkt er dine databaser begyndt at eksportere, og du vil se den procentvise fremgang for hver databaseeksport (billedet nedenfor).

Vær opmærksom på eventuelle fejlbehæftede databaser, da du kan køre batchfilen igen, når den er færdig, ved kun at bruge de databaser, der kan have fejlet. Hvis databaserne ikke kan sikkerhedskopiere, skal du notere dig fejlmeddelelsen, der vises i kommandoprompten, rette fejlen ved at ændre den eksisterende C:\databases.txt-fil, så den kun inkluderer de mislykkede databaser, og genkør db-backup.bat indtil alle databaser er eksporteret.

Gendannelse af databaser til destinationsserveren

Nu har du mappen C:\dbbackups\ der indeholder .bak-filer for hver database, du vil migrere. Du skal kopiere mappen og din C:\databases.txt fil til destinationsserveren. Der er adskillige måder at flytte dine data til destinationsserveren på; du kan bruge USB, Robocopy eller FTP. Mappen på destinationsserverens C-drev skal hedde C:\dbbackups . Det er vigtigt at navngive filen nøjagtigt, da vores script vil lede efter .bak-filerne her. Vær sikker på, at destinationsserveren også har din C:\databases.txt-fil, da vores script vil lede efter databasenavnene her.

1. Åbn en notesblok og kopier/indsæt følgende i dokumentet og gem 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. Gem filen som C:\db-restore .bat

3. Naviger til menuen Start, og skriv cmd .

4. Højreklik på Kommandoprompt og vælg Kør som administrator . Indtast følgende kommando:

cd C:\

og tryk på Enter. Skriv nu db-restore.bat og tryk på Enter.

Dine databaser er nu begyndt at importere. Du vil se procentdelen af ​​hver databases gendannelse og meddelelsen "RESTORE DATABASE successively processed ” for hver database, der er blevet behandlet.

Vær opmærksom på eventuelle mislykkede databaser, da du kan køre batchfilen igen, når den er færdig, ved kun at bruge de databaser, der har fejlet. Hvis databaserne ikke kan sikkerhedskopiere, skal du notere dig fejlmeddelelsen, der vises i kommandoprompten, adressere fejlen (du kan ændre batchfilen efter behov), ændre C:\databases.txt til kun at inkludere de fejlbehæftede databaser og gentage -kør db-restore.bat, indtil alle databaser er eksporteret.

Tillykke, du har nu sikkerhedskopieret og gendannet alle dine databaser til den nye server. Hvis du har problemer med login, mens du tester SQL-forbindelserne på destinationsserveren, skal du se Migrering af Microsoft SQL-logins (ankerlink) afsnittet i denne artikel og følg trinene deri. For at migrere visninger eller lagrede procedurer henvises til Migrering af visninger og lagrede procedurer afsnit. Hver SQL-server vil have sine konfigurationer og forhindringer, men vi håber, at denne artikel har givet dig et stærkt grundlag for din Microsoft SQL Server-migrering.


  1. hukommelseseffektiv indbygget SqlAlchemy iterator/generator?

  2. Opret forbindelse til mysql på Amazon EC2 fra en fjernserver

  3. MySQL-vælg med CONCAT-tilstand

  4. SQL Client til Mac OS X, der fungerer med MS SQL Server