Те, кто часто сталкиваются с задачей поднятия различных бекапов баз, рано или поздно задумываются об автоматизации этого процесса. Вот и я решил создать подобный скрипт.

Скрипт принимает один единственный параметр - полное имя файла бекапа.
Перед использованием необходимо отредактировать скрипт и настроить параметры под себя:

  • DestinationPath - путь, где будет развернут заданный бекап
  • ServerName, UserName, Password - параметры соединения с СУБД

После выполнения скрипта, в папке DestinationPath будет создана папка с именем базы, в которой будут храниться файлы данных и лога и произойдет связывание пользователя Supervisor с одноименным логином.

Нравится

Поделиться

12 комментариев

Сергей, я так понимаю Restore.sql отсутствует потому как в cmd написано

 del Restore.sql

:)

Именно - это временный файл. После его выполнения в нем уже нет надобности.

Теперь понял. А почему сразу не выполнить этот запрос через osql?

Сначала так и пробовал. Текст запроса оказался слишком большим для такого способа выполнения.

Здорово :) Я мечтала о такой штуке, а теперь она есть! :)

Уххх. Давно было пора.

Сереж, а можно сразу для восстановленной базы проводить сопоставление fkeys? Куда это добавить в скрипт?

Можно продублировать предпоследнюю строку и в ней заменить

exec sp_change_users_login 'Auto_Fix', 'Supervisor'

на

exec sp_change_users_login 'update_one', 'fkeys', 'fkeys'

Я бы добавил еще несколько улучшений:
1. Передача параметров через командную строку. Постоянно править файл неудобно. И если не передали, то спросить пользователя в консоли.
2. Добавить поддержку Windows авторизации
3. Обработать корректно если система не знает где утилита osql - в переменной PATH не добавлен путь или вы запустили файл не в папке с osql.

Для меня эти все опции, которые правятся в скрипте, статичны. И было бы не удобно их все время вводить в параметрах скрипта. Как варинат можно анализировать, если соотв-ий параметр не задан, то использвать константное значение.

Сергей, все верное - часть параметров очень часто статична: имя пользователя, пароль, сервер, а вот Имя БД, имя файла бекапа в моем случае нет, то править все время файл не удобно или хранить много таких скриптов или сделать самые часто изменяемые параметры - опциональными.

Добавил такую возможность.
Теперь, если задан второй параметр, то он воспринимается как имя базы, иначе имя базы определяется по имени файла бекапа.
Если задан третий параметр, то он воспринимается как папка, в которую будут помещены файлы БД, иначе - этот параметр берется из переменной DestinationPath, указанной в скрипте.

Эти два параметра не обязательные. Архив со скриптом обновил.

Показать все комментарии

Наконец-то вышла долгожданная :) графическая оболочка для утилиты vdc
(Позволяющая поднимать бекап прямо из архива формата "rar")
см. блог http://community.terrasoft.ua/node/2723

ссылка для скачивания: http://community.terrasoft.ua/system/files/RestoreDB_From_RAR.rar

Для работы программы нужны файлы unrar.dll и vdc.exe (они есть в архиве)
Это пока Бета-версия, но вроде она работоспособная :)
Будет полезна всем, кому приходится поднимать БД из бекапа в rar-архиве.

Нравится

Поделиться

1 комментарий

Интересно ;)
Днями тоже на С# писал....

Показать все комментарии

Часто, в целях воспроизведения ошибок, необходимо поднять бекап, который прислан в архиве. Если архив большой, то процесс разархивирования и поднятия бекапа занимает длительное время...

Предлагаю утилиту, которая чудесным образом поднимает Бекап БД прямо из RAR архива.

Главное преимущество в том, что поднятие из архива выполняется быстрее даже чем из *.бак файла.
Утилита не моя. Используйте на свой страх и риск!!! :)
Испытал я ее на MSSQL 2000, по идее должна также работать с MSSQL 2005
Для подключения к Серверу используется (Windows authentication)

В архиве, помимо самой программки, есть ReadMe.txt, unrar.dll, а также .bat файл для удобного запуска ее с параметрами и приложение на Delphi которое полностью автоматизирует процесс.

Пример параметров запуска:

vdc.exe -F"SOI.rar" -Q"RESTORE DATABASE [SOIlocal] FROM VIRTUAL_DEVICE = 'RARDEVICE' WITH STATS = 1, REPLACE, MOVE 'Developing310_Data' TO 'D:\DB\SOI_Data.mdf', MOVE 'Developing310_Log' TO 'D:\DB\SOI_Log.ldf'"

Параметры:
1)параметр -F - путь к архиву ("SOI.rar");
2)параметр -S - позволяет указать имя инстанса, например SERVER\INST1
(Необязательный параметр. Если не указан - коннектися к локальному серверу)

Доп параметры команды "RESTORE DATABASE" (Transact-SQL):
1) [SOIlocal] - имя БД на комп.;
2) MOVE ... TO ...
'Developing310_Data', 'Developing310_Log' - логическое имя файлов данных исходной БД (их названия можно посмотреть в свойствах БД)
'D:\DB\SOI_Data.mdf', 'D:\DB\SOI_Log.ldf' - путь сохранения физических файлов данных
(необходимый параметр при создании новой БД)

P.S. Утилиту я взял с http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=193476

Нравится

Поделиться

2 комментария

Спасибо, ждем с нетерпением графической оболочки!!!
А можно авторизироваться с помощью SQL-аутентификации? Если да, то какие ключи в командной строке отвечают за логин и пароль подключения?

Start\Run\isqlw и потом F1 :)

Показать все комментарии