Database
 sql >> Baza danych >  >> RDS >> Database

Migracja baz danych SQL za pomocą wiersza poleceń

Co zrobić, jeśli masz dziesiątki baz danych SQL, a ręczne tworzenie/przywracanie każdej bazy danych jest zbyt czasochłonne dla Twojego projektu? Nie ma problemu! Możemy napisać metodę, która będzie eksportować i importować wszystkie bazy danych jednocześnie bez konieczności ręcznej interwencji. Aby uzyskać pomoc w przenoszeniu danych logowania SQL oraz przechowywanych procedur i widoków, zapoznaj się z naszym artykułem dotyczącym migracji MSSQL z SSMS.

Tworzenie kopii zapasowych baz danych na serwerze źródłowym

1. Otwórz SSMS (Microsoft SQL Server Management Studio) na serwerze źródłowym, zaloguj się do instancji SQL i otwórz okno New Query. Uruchom następujące zapytanie:

SELECT name FROM master.sys.databases

To polecenie wyświetli listę wszystkich baz danych MSSQL na twoim serwerze. Aby skopiować tę listę, kliknij dowolne miejsce w wynikach i użyj skrótu klawiaturowego CTRL+A (Command + A dla użytkowników komputerów Mac), aby zaznaczyć wszystkie bazy danych. Po podświetleniu wszystkich baz danych kliknij prawym przyciskiem myszy i wybierz kopiuj.

2. Otwórz Notatnik, wklej wyniki i usuń wszystkie bazy danych (w nowo skopiowanym tekście notatnika), których NIE chcesz migrować, a także usuń następujące wpisy:

  • mistrz
  • tymczasowa baza danych
  • model
  • msdb

Wpisy te są systemowymi bazami danych i ich kopiowanie nie jest konieczne. Pamiętaj, aby usunąć wszystko z wyjątkiem jawnych baz danych, które chcesz przenieść. Powinieneś teraz mieć listę wszystkich wymaganych baz danych oddzielonych linią. tj.

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Zapisz ten wynik na komputerze jako C:\databases.txt .

4. Utwórz nowe okno Notatnika, skopiuj/wklej następujące elementy do dokumentu i zapisz je jako 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. Teraz, po zapisaniu pliku jako C:\db-backup.bat, przejdź do Start menu i wpisz cmd i kliknij prawym przyciskiem myszy Wiersz polecenia aby wybrać Uruchom jako administrator .Wpisz następujące polecenie:

cd C:\

I naciśnij Enter. Następnie wpisz db-backup.bat i ponownie naciśnij Enter.

W tym momencie Twoje bazy danych rozpoczęły eksport i zobaczysz procentowy postęp każdego eksportu bazy danych (na zdjęciu poniżej).

Zanotuj wszelkie uszkodzone bazy danych, ponieważ możesz ponownie uruchomić plik wsadowy, gdy jest gotowy, używając tylko baz danych, które mogły ulec awarii. Jeśli tworzenie kopii zapasowej baz danych nie powiodło się, zanotuj komunikat o błędzie wyświetlany w wierszu polecenia, napraw błąd, modyfikując istniejący plik C:\databases.txt tak, aby zawierał tylko uszkodzone bazy danych i ponownie uruchom plik db-backup.bat dopóki wszystkie bazy danych nie zostaną pomyślnie wyeksportowane.

Przywracanie baz danych na serwerze docelowym

Do tej pory masz folder C:\dbbackups\ który zawiera pliki .bak dla każdej bazy danych, którą chcesz przenieść. Musisz skopiować folder i Twój C:\databases.txt plik do serwera docelowego. Istnieje wiele sposobów przenoszenia danych na serwer docelowy; możesz użyć USB, Robocopy lub FTP. Folder na dysku C serwera docelowego powinien nazywać się C:\dbbackups . Ważne jest, aby dokładnie nazwać plik, ponieważ nasz skrypt będzie tutaj szukał plików .bak. Upewnij się, że serwer docelowy zawiera również Twój plik C:\databases.txt, ponieważ nasz skrypt będzie szukał tutaj nazw baz danych.

1. Otwórz Notatnik i skopiuj/wklej następujące elementy do dokumentu i zapisz je jako 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. Zapisz plik jako C:\db-restore .nietoperz

3. Przejdź do menu Start i wpisz cmd .

4. Kliknij prawym przyciskiem myszy Wiersz polecenia i wybierz Uruchom jako administrator . Wpisz następujące polecenie:

cd C:\

i naciśnij Enter. Teraz wpisz db-restore.bat i naciśnij Enter.

Twoje bazy danych rozpoczęły import. Zobaczysz procent przywrócenia każdej bazy danych i komunikat „PRZYWRÓCENIE BAZY DANYCH pomyślnie przetworzone ” dla każdej bazy danych, która została pomyślnie przetworzona.

Zanotuj wszelkie uszkodzone bazy danych, ponieważ możesz ponownie uruchomić plik wsadowy, gdy jest gotowy, używając tylko baz danych, które uległy awarii. Jeśli tworzenie kopii zapasowej baz danych nie powiodło się, zanotuj komunikat o błędzie wyświetlany w wierszu polecenia, usuń błąd (w razie potrzeby możesz zmienić plik wsadowy), zmodyfikuj C:\databases.txt, aby uwzględnić tylko uszkodzone bazy danych i ponownie -run db-restore.bat, aż wszystkie bazy danych zostaną pomyślnie wyeksportowane.

Gratulacje, wykonałeś kopię zapasową i przywróciłeś wszystkie swoje bazy danych na nowy serwer. Jeśli masz problemy z logowaniem podczas testowania połączeń SQL na serwerze docelowym, zapoznaj się z Migracja danych logowania Microsoft SQL (link zakotwiczony) tego artykułu i wykonaj opisane w nim czynności. Aby przeprowadzić migrację widoków lub procedur składowanych, zapoznaj się z artykułem Migracja widoków i procedur składowanych Sekcja. Każdy serwer SQL będzie miał swoje konfiguracje i przeszkody, z którymi trzeba się zmierzyć, ale mamy nadzieję, że ten artykuł zapewni Ci solidne podstawy do migracji do Microsoft SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to są operatory SQL i jak działają?

  2. Sprawdź ograniczenie w SQL

  3. Jak CTE może pomóc w pisaniu złożonych, potężnych zapytań:perspektywa wydajności

  4. Jak tworzyć liczby pięter w SQL

  5. Zrozumienie operatora przestawnego w SQL