Ами ако имате десетки 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.