Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: RESTORE баз в одноименные подпапки с помощью скрипта  (Прочитано 894 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн supernaut

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Добрый день!

Что добавить к скрипту для того чтобы базы восстанавливались из bak в одноименные папки по пути E:\SQL_DATA\имя базы\ ?
Сейчас скрипт кладет все базы и логи в одну папку E:\SQL_DATA\.

Сам скрипт:

#!/bin/bash
for f in $(cat list_databases.txt);
do
echo "RESTORE DATABASE [$f] FROM DISK = N'D:\databases_backup\\"$f".bak'
WITH FILE=1, MOVE N'"$f"' TO N'E:\SQL_DATA\\"$f".mdf', MOVE N'"$f"_log' TO N'E:\SQL_DATA\\"$f"_log.ldf'"; done >> tsql_data_restore.txt

запуск скрипта: sqlcmd -S localhost -i d:\tsql_data_backup.txt

Спасибо!

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
При чем здесь sqlcmd к bash?
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн supernaut

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
При чем здесь sqlcmd к bash?
Операционка Windows, скрипт выполняется в cygwin. sqlcmd привел для полной картины.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Не уверен (в контексте выполнения скрипта через sqlcmd), но должно быть что-то вроде
Код: (bash) [Выделить]
#!/bin/bash
for f in $(cat list_databases.txt);
do
mkdir -p "E:\\SQL_DATA\\$f"
echo "RESTORE DATABASE [$f] FROM DISK = N'D:\\databases_backup\\"$f".bak'
WITH FILE=1, MOVE N'"$f"' TO N'E:\\SQL_DATA\\"$f"\\"$f".mdf', MOVE N'"$f"_log' TO N'E:\\SQL_DATA\\"$f"\\"$f"_log.ldf'"
done >> tsql_data_restore.txt
« Последнее редактирование: 22 Мая 2015, 11:08:33 от Azure »
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн supernaut

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Не уверен (в контексте выполнения скрипта через sqlcmd), но должно быть что-то вроде
Код: (bash) [Выделить]
#!/bin/bash
for f in $(cat list_databases.txt);
do
mkdir -p "E:\\SQL_DATA\\$f"
echo "RESTORE DATABASE [$f] FROM DISK = N'D:\\databases_backup\\"$f".bak'
WITH FILE=1, MOVE N'"$f"' TO N'E:\\SQL_DATA\\"$f"\\"$f".mdf', MOVE N'"$f"_log' TO N'E:\\SQL_DATA\\"$f"\\"$f"_log.ldf'";
done >> tsql_data_restore.txt

Огромное спасибо за помощь! Работает.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Немного добавил бы(на всякий)
Код: (bash) [Выделить]
mkdir -p "E:\\SQL_DATA\\$f" &>/dev/null
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.016 секунд. Запросов: 23.