Database
 sql >> база данни >  >> RDS >> Database

Миграция на SQL бази данни с команден ред

Ами ако имате десетки SQL бази данни и ръчното архивиране/възстановяване на всяка база данни отнема твърде много време за вашия проект? Няма проблем! Можем да създадем скрипт за метод, който ще експортира и импортира всички бази данни наведнъж, без да се налага ръчна намеса. За помощ при прехвърляне на SQL входове и съхранени процедури и изгледи разгледайте нашата статия за MSSQL миграция със SSMS.

Архивиране на бази данни на изходния сървър

1. Отворете SSMS (Microsoft SQL Server Management Studio) на изходния сървър, влезте в SQL екземпляра и отворете прозорец за нова заявка. Изпълнете следната заявка:

SELECT name FROM master.sys.databases

Тази команда ще изведе списък с всички MSSQL бази данни на вашия сървър. За да копирате този списък, щракнете навсякъде в резултатите и използвайте клавишната комбинация CTRL+A (Command + A за потребители на Mac), за да изберете всички бази данни. След като маркирате всички бази данни, щракнете с десния бутон и изберете копие.

2. Отворете Notepad, поставете резултатите си и изтрийте всички бази данни (в новокопирания текст на бележника), които НЕ желаете да мигрирате, както и изтрийте следните записи:

  • майстор
  • tempdb
  • модел
  • msdb

Тези записи са базите данни на системата и не е необходимо копирането им. Уверете се, че сте изтрили всичко, освен изрично базите данни, които трябва да мигрирате. Сега трябва да имате списък с всички необходими бази данни, разделени с ред. т.е.

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Запазете този резултат на компютъра като C:\databases.txt .

4. Създайте нов прозорец на Notepad, копирайте/поставете следното в документа и го запазете като 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. След като сте запазили файла като C:\db-backup.bat, отидете на Старт меню и въведете cmd и щракнете с десния бутон върху Команден ред за да изберете Изпълни като администратор .Въведете следната команда:

cd C:\

И натиснете Enter. След това въведете db-backup.bat и натиснете Enter още веднъж.

В този момент вашите бази данни са започнали да експортират и ще видите процентния напредък на всяко експортиране на база данни (на снимката по-долу).

Обърнете внимание на всички неуспешни бази данни, тъй като можете да стартирате отново пакетния файл, когато е готов, като използвате само базите данни, които може да са се провалили. Ако базите данни не успеят да архивират, обърнете внимание на съобщението за грешка, показано в командния ред, отстранете грешката, като модифицирате съществуващия файл C:\databases.txt, за да включва само неуспешните бази данни и стартирайте отново db-backup.bat докато всички бази данни бъдат успешно експортирани.

Възстановяване на бази данни на целевия сървър

Вече имате папката C:\dbbackups\ която съдържа .bak файлове за всяка база данни, която искате да мигрирате. Ще трябва да копирате папката и вашият C:\databases.txt файл към целевия сървър. Има много начини да преместите вашите данни към сървъра местоназначение; можете да използвате USB, Robocopy или FTP. Папката на C устройството на целевия сървър трябва да се нарича C:\dbbackups . Важно е да наименувате точно файла, тъй като нашият скрипт ще търси .bak файловете тук. Уверете се, че на целевия сървър има и вашия C:\databases.txt файл, тъй като нашият скрипт ще търси имената на базата данни тук.

1. Отворете Notepad и копирайте/поставете следното в документа и го запазете като 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. Запазете файла като C:\db-restore .прилеп

3. Придвижете се до менюто "Старт" и въведете cmd .

4. Щракнете с десния бутон върху Команден ред и изберете Изпълни като администратор . Въведете следната команда:

cd C:\

и натиснете Enter. Сега въведете db-restore.bat и натиснете Enter.

Вашите бази данни вече започнаха да импортират. Ще видите процента на възстановяване на всяка база данни и съобщението „RESTORE DATABASE успешно обработено ” за всяка база данни, която е била успешно обработена.

Обърнете внимание на всички неуспешни бази данни, тъй като можете да стартирате отново пакетния файл, когато е готов, като използвате само базите данни, които са се провалили. Ако базите данни не успеят да се архивират, обърнете внимание на съобщението за грешка, показано в командния ред, отстранете грешката (можете да промените пакетния файл, ако е необходимо), променете C:\databases.txt, за да включва само неуспешните бази данни и отново -изпълнете db-restore.bat, докато всички бази данни бъдат успешно експортирани.

Поздравления, сега сте архивирали и възстановили всичките си бази данни на новия сървър. Ако имате проблеми с влизането, докато тествате SQL връзките на целевия сървър, вижте Мигриране на Microsoft SQL входове (закотвена връзка) раздел на тази статия и следвайте стъпките в него. За да мигрирате изгледи или съхранени процедури, моля, вижте Мигриране на изгледи и съхранени процедури раздел. Всеки SQL сървър ще има своите конфигурации и препятствия, но се надяваме, че тази статия ви е дала силна основа за вашата миграция на 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. Продуктова номенклатура и архитектура на IRI

  2. Забавление с компресия (columnstore) на много голяма маса – част 2

  3. Как да класирате редове в дял в SQL

  4. N-та най-висока заплата

  5. Слайд тестове и проби от #SQLintersection