Простой способ перемещения баз данных между серверами?
Мне нужно переместить 100 баз данных из разных экземпляров SQL в другие идентичные экземпляры в другом окне.
Я знаю, что могу вручную отсоединить, скопировать файл, установить заново, но есть ли более простой / автоматизированный способ? Желательно инструмент пользовательского интерфейса, чтобы выбрать базы данных для копирования и позволить ему продолжать с этим?
Это похоже на предыдущий вопрос, но это было более 7 лет назад, возможно, все пошло дальше?
3 ответа
Я удивлен, что никто не упомянул встроенный мастер копирования баз данных. Кажется, именно то, что я хочу!
Используя библиотеку PowerShell DBA Tools, вы можете сделать что-то вроде этого:
Get-DbaBackupHistory -SqlInstance Server1 |
Restore-DbaDatabase -SqlInstance Server2 -withreplace
Это позволит использовать ваши существующие резервные копии на сервере Server1 и восстановить их на сервере Server2. Я предполагаю, что если вы будете выполнять резервное копирование всех ваших баз данных на сервере Server1, то при восстановлении они будут использованы, и у вас будет эффективный способ копирования баз данных на сервер Server2, а также приличный запасной план, если вам нужно вернуться к серверу 1 (т.е. запустить restore [dbName] with recovery на все на сервере1)
Хранимые процедуры отсоединения / присоединения больше не рекомендуются, так как они могут вызвать проблемы с компонентом Service Broker и некоторые другие вещи. Лучше всего, если бы не было стороннего инструмента, который вам пришлось бы покупать, было бы выполнить сценарий, переводя все базы данных в автономный режим, затем вручную скопировать данные и файлы журналов в новое место назначения, а затем прикрепить их с помощью "Создать базу данных" для прикрепить код У меня есть код, которым я мог бы поделиться с вами, если вы заинтересованы, который автоматизирует эти утверждения.