Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как перевести базу данных в состояние recovering... ?  [new]
rshark
Member

Откуда:
Сообщений: 23
Имеет full database backup и N-ое количество бэкапов логов транзакций.

восстановление лога транзаций происходит когда база данных в состоянии recovering.
Необходимо после каждого восстановления лога транзакций переводить базу в онлайн, делать full-backup, а потом переводить опять в recovering.

Можно ли это сделать и как?
18 мар 15, 16:39    [17400807]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Можно, читайте справку по BACKUP DATABASE.
18 мар 15, 16:56    [17400945]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
rshark
Member

Откуда:
Сообщений: 23
Я не нашел в справке как переводить базу данных в recovering из онлайн.
18 мар 15, 16:59    [17400971]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
rshark
восстановление лога транзаций происходит когда база данных в состоянии recovering.

какие новости.
чтобы восстановить логи, как раз надо оставлять базу в Restoring,
а чтобы базу оставить в Restoring,
надо ее восстановить с NORECOVERY.

+ To apply a transaction log backup
To apply a transaction log backup, the following requirements must be met:

The immediately previous full database backup or differential database backup must be restored first.


All transaction logs that are created after that full or differential database backup must be restored in chronological order. If a transaction log backup in this log chain is lost or damaged, you can restore only transaction logs before the missing transaction log.


The database has not yet been recovered. The database cannot be recovered until after the final transaction log has been applied. If you recover the database after restoring one of the intermediate transaction log backups, that before the end of the log chain, you cannot restore the database past that point without restarting the complete restore sequence, starting with the full database backup.
18 мар 15, 18:18    [17401480]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
rshark,

"Необходимо после каждого восстановления лога транзакций переводить базу в онлайн, делать full-backup, а потом переводить опять в recovering.

Можно ли это сделать и как?" - нет, нельзя.
Можно каждый раз начинать сначала, те с FULL бэкапа.
18 мар 15, 18:24    [17401498]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
а мне не нравится здесь слово recovering.
и неверняка в этом все дело.
не надо ему никакое recovering,
когда recovering, уже поздно пить боржоми, больше никакие логи не накатить,
recovering -- это база уже переходит в состояние online
+ Relationship of RECOVERY and NORECOVERY

Understanding How Restore and Recovery of Backups Work in SQL Server
Relationship of RECOVERY and NORECOVERY Options to Restore Phases

A specific RESTORE statement either ends after the redo phase or continues through the undo phase, depending on whether the statement specified WITH NORECOVERY, as follows:

WITH RECOVERY includes both the redo and undo phases and recovers the database; additional backups cannot be restored. This is the default.

If the roll forward set has not been rolled forward far enough to be consistent with the database, the undo phase cannot occur. The Database Engine issues an error and recovery stops.

If the whole roll forward set is consistent with the database, recovery is performed, and the database can be brought online.

WITH NORECOVERY omits the undo phase to preserve uncommitted transactions. Omitting the undo phase allows for restoring other backups to roll the database further forward in time. Occasionally, RESTORE WITH NORECOVERY rolls forward data to where it is consistent with the database. In these cases, the Database Engine issues an informational message stating that the roll forward set can now be recovered by using the RECOVERY option.

rshark, лучше бы не "методы решения" тут озвучивали, а саму задачу.
вам, может, надо логи последовательно восстанавливать, но между восстановлениями читать из базы?
для этого есть RESTORE WITH STANDBY.
18 мар 15, 19:07    [17401703]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
o-o,
"recovering -- это база уже переходит в состояние online" - может и не перейти, если мне не изменяет склероз.
18 мар 15, 19:15    [17401741]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
rshark
Имеет full database backup и N-ое количество бэкапов логов транзакций.

восстановление лога транзаций происходит когда база данных в состоянии recovering.
Необходимо после каждого восстановления лога транзакций переводить базу в онлайн, делать full-backup, а потом переводить опять в recovering.

Можно ли это сделать и как?


Можно я отвечу прямо: НЕЛЬЗЯ

Смею предположить, что вы хотите получить состояние данных на какой-то момент времени. Для это сущеcтвует Point In Time Recovery. Учим матчасть и вперёд. https://technet.microsoft.com/en-us/library/ms179451(v=sql.105).aspx
18 мар 15, 19:39    [17401810]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
Я же пишу, что "переходит", а не что успешно перейдет, т. е. в принципе процесс пошел :)
Могу рассказать, как сделать "нескончаемое recovery", надо перегружать сервер бесконечно по расписанию, где интервал должен быть больше чем время, необходимое на recovery. Т. е. достаточно начать и не завершить большую транзакцию, и чтобы она захватилась бэкапом, ну или можно отвязаться от бэкапов, а просто сделать shutdown with nowait во время такой транзакции. Стартуем сервер, база переходит в Recovering...
Любуемся на это состояние, но не дожидаясь перехода в онлайн снова shutdown with nowait. И так по кругу, будет вечное in recovery
18 мар 15, 19:39    [17401814]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
a_voronin,
Ну так может ТС и ищет тот самый point in time, на к-ый хочет восстановить. Удалили таблицу, но не знают, когда. Восстанавливают последовательно логи и проверяют, в какой же момент таблица исчезла, чтобы минимально данные потерять, восстановить на момент за минуту до дропа. Чем каждый раз заново начинать восстановление, оставляют базу в standby и смотрят, что имеют на тот момент.
Только НАФИГА В ПЕРЕРЫВЕ МЕЖДУ ЭТИМ ВСЕМ СНОВА БЭКАПИТЬ БАЗУ???
18 мар 15, 19:48    [17401848]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
Ну т. е. не они в standby оставляют, а вообще люди так поступают, а что там делают *они*, да кто бы знал
18 мар 15, 19:53    [17401863]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
o-o,

Экий вы батенька затейник, есть путь короче: берем бэкап с энтерпрайза с фичей которой нет на стандарте и ресторим на этот самый стандарт. И получаем удовольствие от созерцания...
18 мар 15, 20:01    [17401895]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
Нет, так просто не восстановится.
Уйдет в suspect.
Вот база с partitioning, к-ую пытаюсь на экспрессе восстановить

К сообщению приложен файл. Размер - 59Kb
18 мар 15, 21:00    [17402199]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
o-o,

целевым должен быть стандарт иначе фокус не получится :-)
18 мар 15, 21:21    [17402261]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
NickAlex66,

у меня только Экспрессы, Девелоперы и "их" Энтерпрайзы
а вы с какой фичей его на вечном Recovery поймали?
странно, что от редакции целевого зависит...
скорее, фича должна быть "неочевидной", чтобы он не смог вот так сразу найти
18 мар 15, 21:32    [17402294]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
o-o,

На секционировании.
18 мар 15, 21:59    [17402397]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
какие-то они непоследовательные.
если Экспресс "увидел" partitioning и выдал соответствующую ошибку, то почему Standard не в состоянии? интересно даже...
18 мар 15, 22:11    [17402445]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest
и все же интересно, что не то со Standard.
может, там еще какие-то проблемы были, что действительно Recovery не могло завершиться?
дело в том, что у меня все же завершается, судя по логу.
но в онлайн не переходит, т.к. он обнаруживает в базе Partitioning Function.

на картинке лог не после рестора,
это очередная попытка обмануть Экспресс подменой ему файлов базы.
на этот раз ему привалило счастье с секционированной таблицей.
засек!
19 мар 15, 14:12    [17405324]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
o-o
Guest


К сообщению приложен файл. Размер - 54Kb
19 мар 15, 14:12    [17405328]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести базу данных в состояние recovering... ?  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
o-o,

Не могу сейчас привести пример, под рукой только смарт. До понедельника, как минимум:-(
19 мар 15, 15:06    [17405692]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить