Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Restore из Backup'а, Основы резерного копирования 
V
    Опции темы
VitalyP
Дата 1.9.2011, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 42
Регистрация: 24.8.2011

Репутация: нет
Всего: нет



Доброго времени суток! 
Тема поднималась на этом форуме, но для себя не нашел ответа. (возможно плохо искал, тогда прошу простить меня).

Задача тривиальна:

1. Раз в сутки создавать backup БД.
2. По необходимости восстанавливать из backup'а.

Сделал следующее:

1. В sql server management studio создал задачу с кодом:
Выделить всёкод SQL
1:
BACKUP DATABASE [Test] TO DISK='C:\Backup\SQL_Test.bak'

Результат: по расписанию создаётся bak.

2. Создал приложение в Builder по кнопке в ADOQuery выполняется запрос:
Выделить всёкод SQL
1:
RESTORE DATABASE [Test] FROM DISK = 'C:\\Backup\\SQL_Test.bak'

Результат: "Не удалось получить монопольный доступ, т.к. БД используестся"

Я так понял, мне надо отключать пользователей от БД.

Вопрос: как мне запросом из приложения получить монопольный доступ, а после restore восстановить все коннекшны?
PM MAIL   Вверх
Akina
Дата 1.9.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Цитата

The system administrator restoring the database backup must be the only person currently using the database to be restored.


Добавлено через 3 минуты и 37 секунд
Цитата(VitalyP @  1.9.2011,  11:34 Найти цитируемый пост)
как мне запросом из приложения получить монопольный доступ

Разорвать все соединения. Можно принудительно и жёстко - выводом базы в оффлайн или даже детачем. Всё равно что бы там не было на коннектах - всё похерится.

Цитата(VitalyP @  1.9.2011,  11:34 Найти цитируемый пост)
после restore восстановить все коннекшны? 

Это ещё нахрена? никак.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
VitalyP
Дата 5.9.2011, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 42
Регистрация: 24.8.2011

Репутация: нет
Всего: нет



Цитата(Akina @  1.9.2011,  14:04 Найти цитируемый пост)
Разорвать все соединения. Можно принудительно и жёстко - выводом базы в оффлайн или даже детачем.

Подскажите пожалуйста код запроса для этого.
Я так понимаю, его надо выполнить перед:
Выделить всёкод SQL
1:
RESTORE DATABASE [Test] FROM DISK = 'C:\\Backup\\SQL_Test.bak'



Цитата(Akina @  1.9.2011,  14:04 Найти цитируемый пост)
Это ещё нахрена? никак.

Да, Вы правы. Не подумал.
PM MAIL   Вверх
Akina
Дата 5.9.2011, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Цитата(VitalyP @  5.9.2011,  10:08 Найти цитируемый пост)
Подскажите пожалуйста код запроса для этого.

Не поверите... DETACH DATABASE.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
VitalyP
Дата 5.9.2011, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 42
Регистрация: 24.8.2011

Репутация: нет
Всего: нет



Сделал вот так:
Выделить всёкод SQL
1:
sp_detach_db @dbname='Test'

Теперь мои приложения и Management Studio говорит, что такой БД не существует... 
Подскажите как это исправить...
PM MAIL   Вверх
Akina
Дата 5.9.2011, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Ну наверное тепреь присоединить её обратно - но уже в режиме монопольного доступа... хотя запросто найдётся сволочь, которая успеет прицепиться к базе раньше. Лучше не отклеивать базу, а вывести её в оффлайн - тогда управление сохранится, а клиенты отлетят.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
VitalyP
Дата 6.9.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 42
Регистрация: 24.8.2011

Репутация: нет
Всего: нет



Спасибо!

Подскажите, как: 
Цитата(Akina @  5.9.2011,  15:26 Найти цитируемый пост)
а вывести её в оффлайн
 ?

А то последние попытки отключения заканчиваются ошибкой: "Невозможно отключить...база данных 'Test' используется..."

И ещё, по поводу восстановления: 

RESTORE DATABASE [Test] FROM DISK = 'C:\\Backup\\SQL_Test.bak' WITH REPLACE

Это правильный запрос для восстановления?


Все получилось! Спасибо ещё раз!

Отключить БД:
Выделить всёкод SQL
1:
sp_detach_db @dbname='Test'

Подключить БД:
Выделить всёкод SQL
1:
sp_attach_db @dbname='Test', @filename1='C:\\PathToDB\\Test.mdf'

Восстановить БД из *.bak:
Выделить всёкод SQL
1:
RESTORE DATABASE [Test] FROM DISK = 'C:\\Backup\\SQL_Test.bak' WITH REPLACE


Это сообщение отредактировал(а) VitalyP - 6.9.2011, 13:50
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.