Добрый день!
Хотел разобраться с вопросами интеграционного тестирования.
Работаю с MS SQL сервером. Мне нужно взять базу на одном сервере и скопировать её на другой сервер, все объекты, но без данных. Чтобы такая же была, только на другом сервере и чистенькая, такое возможно? Скриптом, чтобы можно было автоматизировать (вручную могу сделать, но, насколько понял, в скрипт это не превращается).
Если на другой сервер точно нельзя, то хотя бы на том же сервере.
Запускать хочу из тестового проекта c#, ms tests.
Как я себе это представляю, и как делаю вручную: правой кнопкой по базе, задачи, генерация скриптов, по умолчанию выбран пункт "только схема". Далее выгружаю либо в файл, либо на страницу скриптов. Залезаю на нужный сервер, там грохаю эту базу, создаю заново, выполняю полученные скрипты.
Соответственно из c# подключиться к одной базе, выполнить команду, подключиться к другой базе, обнулить её и выполнить полученные скрипты - было бы идеально.
Сколько я рыл, этот функционал нельзя обернуть в команду. Используются какие-то сторонние разработки.
Хотелось бы убедиться, может не то рою, возможно ли провернуть то, о чем я говорю?
Второй вариант, он немного хуже. Есть команды bacup database и restore database. Как-то можно скриптом выполнить restore database не с девайса, а из другой базы данных? Только схему, без данных. Либо перезаписать сразу, либо вначале удалить все объекты и накатить restore с другой базы. Такое возможно?
Привет, ну, я так и написал, что вручную правой кнопкой мыши создаю скрипты. Допустим, кто-то накатил какие-то обновления на базу. Мне опять нужно вручную лезть и перегенерировать скрипты? Я хочу, чтобы это делалось в автоматическом режиме. Чтобы я в проекте тестов нажал выполнение, а база скопировалась с какой-то исходной
можно так:
1) создать резервную копию
2) скопировать в шару, дав доступ полный пользователям, под которыми обе службы скульные работают
3) восстановить на втором сервере
Это все можно автоматизировать-лучше делать через планировщик винды с помощью задания, а там PowerShell-скрипт впихнуть, т к п.2 без CMD сложно сделать.
Также можно вообще свой сервис написать, который будет все это делать с настройками в отдельном конфигурационном файле. Если есть время и желание, то можно и морду сделать настройкам и индикатор выполнения
Виктор П., Вам в любом случае изначально нужна полная копия, а затем ее очищение от данных.
Но обычно проще для регресса и нагрузки как раз брать базу с данными.