Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Вытащить файл из BackUp'a


Автор: VitalyP 29.2.2012, 10:40
Доброго времени суток.
Проблема: не могу корректно восстановить базу данных.

Описание: 
- В заданиях агента SQL Server поставил ежедневную задачу с запросом:
Код

Backup database [UGZ] to disk='C:\Backup\SQL_UGZ.bak'

В результате каждую ночь файл SQL_UGZ.bak увеличивается в размере. В журнале выполнения пишет, что создает все успешно ... файл UGZ_log для файла 1...13. Т.е. 13 раз выполниласась операция.
- Накосячил с запросом Update
- Попытался восстановить запросом: 
Код

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

- Восстанавливает видимо из файла №1. 13-ти дневной давности. Мне надо позавчерашний - файл 12.
- Нашел вот это:
Код

RESTORE DATABASE AdventureWorks2008R2
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
   WITH FILE = 6
      NORECOVERY;

- пишу так:
Код

RESTORE DATABASE [UGZ] FROM DISK = 'C:\\Backup\\SQL_UGZ.bak' WITH FILE = 12 NORECOVERY

- ошибка: "Неправильный синтаксис около конструкции NORECOVERY"

Как мне выполнить эту задачу (если это конечно возможно...)?

Автор: Zioma 29.2.2012, 10:59
Попробуйте так
Код

RESTORE DATABASE [UGZ] FROM DISK = 'C:\\Backup\\SQL_UGZ.bak' WITH FILE = 12, NORECOVERY

Автор: VitalyP 29.2.2012, 11:04
 smile  Спасибо... Но...
Код

RESTORE DATABASE [UGZ] FROM DISK = 'C:\\Backup\\SQL_UGZ.bak' WITH FILE = 12, NORECOVERY


Пишет ошибку: мол немогу заменить файл используйте REPLACE или MOVE.

Как бы мне в запрос еще реплэйс написать...?



Написал так:

Код

RESTORE DATABASE [UGZ] FROM DISK = 'C:\\Backup\\SQL_UGZ.bak' WITH FILE = 12, NORECOVERY, REPLACE


Теперь она (БД) висит в манаджмент студио с зеленой стрелочкой, и в скобках написано "Воссстановление из копии..." и разумеется обратиться к ней нельзя.
И что-то подозрительно долго...

Автор: Zioma 29.2.2012, 11:11
Значит надо указать RECOVERY
Код

RESTORE DATABASE [UGZ] FROM DISK = 'C:\\Backup\\SQL_UGZ.bak' WITH FILE = 12, RECOVERY, REPLACE

Автор: VitalyP 29.2.2012, 11:14
Эммм.... Спасибо. Но к сожалению было плохо, стало еще хуже... К ней нельзя обатиться, ни даже удалить, пишет ошибку, что ее нету. Как отменить эту операцию восстановления?

Автор: Zioma 29.2.2012, 11:24
Как это нету? Где нету?  smile 
Если операция восстановления прошла успешно, то все должно работать.

Где вы смотрите? И еще не плохо было бы указать версию сиквела.

Наперед: если используете SSMS, то попробуйте справа на дереве БД нажать F5

Автор: VitalyP 29.2.2012, 11:34
Вот именно, что не востанавливается. Находится в процессе, обновлял разумеется. 
Впрочем, конечно это не решение проблемы, но создал из BackUp'a БД с другим именем, сейчал правлю приложения.
Восстановил нужную версию через что-то типа мастера восстановления в SSMS. Запрос который я выполнял что-то делает нехорошее smile 
Т.е. сейчас две БД одна "Восстанавливается", вторая - какая надо...

Автор: Zioma 29.2.2012, 12:05
Ну тут ХЗ, что вы там накосячили  smile 
А "мастер восстановления в SSMS" выполняет те же запросы, что и вы.

А "подвисшую" базу надо удалить.

Автор: VitalyP 29.2.2012, 12:23
- Я сам ХЗ.
- Возможно, но запрос его я не вижу.
- Не удаляется, пишет, что её не существует.

Впрочем, спасибо. Проблема решена.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)