Jeer
@Jeer
уверенный пользователь

Как скопировать БД с одного сервера на другой?

Добрый день!
Хотел разобраться с вопросами интеграционного тестирования.
Работаю с MS SQL сервером. Мне нужно взять базу на одном сервере и скопировать её на другой сервер, все объекты, но без данных. Чтобы такая же была, только на другом сервере и чистенькая, такое возможно? Скриптом, чтобы можно было автоматизировать (вручную могу сделать, но, насколько понял, в скрипт это не превращается).
Если на другой сервер точно нельзя, то хотя бы на том же сервере.
Запускать хочу из тестового проекта c#, ms tests.

Как я себе это представляю, и как делаю вручную: правой кнопкой по базе, задачи, генерация скриптов, по умолчанию выбран пункт "только схема". Далее выгружаю либо в файл, либо на страницу скриптов. Залезаю на нужный сервер, там грохаю эту базу, создаю заново, выполняю полученные скрипты.
Соответственно из c# подключиться к одной базе, выполнить команду, подключиться к другой базе, обнулить её и выполнить полученные скрипты - было бы идеально.
Сколько я рыл, этот функционал нельзя обернуть в команду. Используются какие-то сторонние разработки.
Хотелось бы убедиться, может не то рою, возможно ли провернуть то, о чем я говорю?

Второй вариант, он немного хуже. Есть команды bacup database и restore database. Как-то можно скриптом выполнить restore database не с девайса, а из другой базы данных? Только схему, без данных. Либо перезаписать сразу, либо вначале удалить все объекты и накатить restore с другой базы. Такое возможно?
  • Вопрос задан
  • 647 просмотров
Пригласить эксперта
Ответы на вопрос 2
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Используя SSMS создайте скрипт "Используя CREATE". Или "Используя DROP и CREATE", если база данных уже есть на сервере.
Ответ написан
jobgemws
@jobgemws
MS SQL Server and .NET Developer, DBA
можно так:
1) создать резервную копию
2) скопировать в шару, дав доступ полный пользователям, под которыми обе службы скульные работают
3) восстановить на втором сервере
Это все можно автоматизировать-лучше делать через планировщик винды с помощью задания, а там PowerShell-скрипт впихнуть, т к п.2 без CMD сложно сделать.
Также можно вообще свой сервис написать, который будет все это делать с настройками в отдельном конфигурационном файле. Если есть время и желание, то можно и морду сделать настройкам и индикатор выполнения
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы