Восстановление базы MS SQL в тестовую базу с откатом транзакций на дату #733561


#0 by drdroid
Есть рабочая база Base1C, модель восстановления - полная, лог транзакций на месте, есть архивная база Base1C_Archiv, надо восстановить из базы Base1C и ее лога транзакций в базу Base1C_Archiv на несколько дней назад, в визуальном редакторе делаю настройки, устанавливаю дату, базу источник, базу приемник,  убираю галочку оставлять базу источник в режиме восстановления, ставлю галочку перезаписывать базу приемник, генерирую скрипт, получаю: USE [master] BACKUP LOG [Base1C] TO  DISK = N'C:BackupBase1C_LogBackup_2015-02-09_22-58-10.bak' WITH NOFORMAT, NOINIT,  NAME = N'Base1C_LogBackup_2015-02-09_22-58-10', NOSKIP, NOREWIND, NOUNLOAD,  STATS = 5 RESTORE DATABASE [Base1C_01012015] FROM  DISK = N'C:TempBase1C.bak' WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 5 GO Я что-то тут не вижу инструкций по откату транзакций и даты, сгенерировало скрипт совершенно не тот который должно было бы, что я делаю не так? =(
#1 by shuhard
покурить BOL уже предлагали в части АТ=... ?
#2 by drdroid
а понятным языком, или кинь в меня примером запроса.
#3 by shuhard
а денег не прислать ?
#4 by drdroid
а я просил? так сложно написать запрос в пару строек для гуру?
#5 by Провинциальный 1сник
Какой скрипт, зачем? В студии восстанавливаете на любую точку времени.
#6 by vhl
галками там тыкаешь и жмешь "ок"
#7 by Ёпрст
#8 by Ёпрст
не забывая при этом, в параметрах указать правильные пути к mdf и ldf
#9 by drdroid
, все так и делал, пути поправил на архивную базу, галочки потыкал, дату на которую надо восстановить поставил, показывает что есть данные для восстановления, запускаю, джу 100%, жду, готово, вхожу в 1С в эту базу, там документы которые после даты восстановления, т.е. тупо на текущую дату восстановило.
#10 by Ёпрст
галку с replace воткнул, с архива какой базы берешь данные ?
#11 by Ёпрст
максимум, может не восстановить, если архивов нема
#12 by HIDDEN MESSAGE
#13 by Ёпрст
есть такое, может последним, не на тот файл "галку" воткнуть.. но, всё быстрее, особенно, если полный раз в неделю, и куча разностных.. еще и с бекапом лога
#14 by zulu_mix
Первый раз слышу чтобы с мдф+лдф можно было на любую секунду восстановить состояние
#15 by val
Для восстановления на любое время - дата необходимо два условия: 1. Полный бекап базы, сделанный до необходимой точки. 2. Цепочка бекапов логов, сделанных после бекапа из п.1 и покрывающих необходимую точку.
#16 by val
+ Все бекапы (базы и логов), кроме последнего,  восстанавливаются с параметром WITH  NORECOVERY. Последний - с  WITH STOPAT Дата Время  RECOVERY
#17 by val
+ Последний бекап логов - тот, в котором лежит необходимая точка
#18 by val
+ Дата в формате ГГГГММДД, время ХХ:ХХ:ХХ Все это берется в одинарные кавычки: 'ГГГГММДД ХХ:ХХ:ХХ'
#19 by zulu_mix
это к чему? >>надо восстановить из базы Base1C и ее лога транзакций в базу Base1C_Archiv на несколько дней назад
#20 by nirazu ne 1c
вы это, удалите базу в которую собираетесь залить архив, создайте новую, и да да, в вашем случае с таким же именем, а потом восстановите из бекапа
#21 by drdroid
галочку перезаписывать базу ставил, восстанавливаю не из архива а из рабочей базы. В   правильно акцентировали внимание на условия. А почему нельзя, в гуи студии предусмотрена такая возможность, сам поклацай посмотри. Если есть база и полный лог транзакций, то почему эти транзакции нельзя откатить на определенную дату? с таким же именем как что, как рабочая база? Так я ж написал что восстанавливаю не из архива а из рабочей базы, полный архив делается без жернала транзакций на сколько я знаю и при восстановлении из него можно восстановится только на момент создания архива. Условие простое есть база = мдф, есть лог транзакций = лдф, мне надо в копию базы загрузить мдф и откатить транзакции по лдф на определенный момент времени.
#22 by drdroid
гуи почему то отрабатывает неправильно, база тупо восстанавливается в состояние источника, без отката транзакций.
#23 by val
"на несколько дней назад" - это и есть необходимая точка на оси времени. Эта точка имеет дату и время. Ваше предложение имеет смысл только в одном случае - если в базе кто-то сидит и блокирует восстановление. Тогда попытка  удаления даст ошибку. Во всех остальных случаях это не нужно. Кроме этого, для восстановления из бекапа в принципе не нужно создавать сначала пустую базу - база и так создастся в процессе восстановления.
#24 by leonidkorolev
+100 Уже выше писали что гуи выдает не совсем ожидаемый результат, может и правильный, но не то что мы ожидаем от него. Это некоторый конструктор, который генерит некоторые скрипты, которые можно и нужно подвергать сомнению. Почему бы не перейти на скрипты, если гуи выдает не то что надо? Или отвращение к скриптам сильнее желания восстановить базу?
#25 by leonidkorolev
В сообщениях чувствуется недопонимание механизма восстановления резервных копий. Начать нужно с осознания, что необходимо восстановить резервную копию на определенную дату. Далее аксиома № 1. Любое восстановление резервной копии начинается с полного бэкапа. Далее val всё расписал в 15, 16,17,18
#26 by val
Спасибо, Леонид. Я только сейчас понял, что народ верил, что можно откатить базу назад, имея только MDF и LDF. Это и в самом деле заблуждение. Необходим полный бекап базы (BAK) и цепочка бекапов логов (TRN) без разрывов, сделанных после полного бекапа. К разрыву приводит любой новый полный бекап, любое обрезание логов. (Для модели SIMPLE вариантов вообще нет.) Как вариант, если есть старый FULL бекап и новый не делался и логи с тех пор не бекапились и не обрезались, можно сделать бекап логов, как сделал ТС во 2-й строке кода, и с помощью старого полного бекапа и одного бекапа логов восстановить базу на любую дату и время.
#27 by drdroid
Хм, я действительно верил в то что "можно откатить базу назад, имея только MDF и LDF", странно вроде как логично было бы иметь такую возможность. Ну да ладно, если есть старый фулл бекап до необходимой даты, но после него фулл бекап делался уже не один раз... и есть бекап логов (сделан недавно), логи не обрезались. >К разрыву приводит любой новый полный бекап, любое обрезание логов. хм, но логи то при полном бекапе не бекапятся и журнал транзакций не обрезается. У меня база весит 1Гб, журнал транзакций 42Гб.
#28 by val
Сейчас у Вас ничего не получится. Впрочем, ничто не мешает Вам самому в этом убедиться. На будущее настройте бекап логов, например, каждый час. И в следующий раз у Вас все будет хорошо. И журнал транзакций расти больше не будет. И можно будет его уменьшить, например, до 1 Гб.
#29 by leonidkorolev
Полный бэкап не разрывает лог, только бэкап лога " если есть старый фулл бекап до необходимой даты, но после него фулл бекап делался уже не один раз... и есть бекап логов (сделан недавно), логи не обрезались." Если так, то есть шанс восстановить
#30 by leonidkorolev
Мой скрип который я пользуюсь постоянно --Пример RESTORE DATABASE [mydb] FILE = N'mydb' FROM  DISK = N'c:ackup1cackup1c.bak' with FILE = 1, MOVE N'mydb' TO     N'c:ase1сmybase.mdf',   MOVE N'mydb_log' TO N'c:ase1сmybase_log.ldf',   NORECOVERY,   NOUNLOAD,   REPLACE,   STATS = 10 RESTORE log [mydb] FROM  DISK = N'c:ackup1cackup1c.trn' with FILE = 1, NORECOVERY, STOPAT = '20141024 16:03:00',   NOUNLOAD,   REPLACE,   STATS = 10 RESTORE DATABASE [mydb] WITH RECOVERY
#31 by drdroid
Премного благодарен за разъяснение и скрипт, попробую восстановиться из старого архива и архива журнала транзакций, о результатах эксперемента сообщу =)
#32 by ssh2QQ6
> К разрыву приводит любой новый полный бекап Не приводит
#33 by ssh2QQ6
Главное чтобы была цепочка бэкапов логов после полного бэкапа, а были ли еще после этого бэкапа полные бэкапы неважно.
#34 by val
Вынужден не согласиться. Полный бэкап всегда прерывает цепочку других бэкапов. "Главное чтобы была цепочка бэкапов логов после полного бэкапа" - эта цепочка будет действовать строго до следующего полного бекапа. Бекап логов, сделанный после следующего полного бекапа, нельзя использовать при восстановлении для предыдущего полного бекапа. Впрочем, зачем спорить. Просто попробуйте.
#35 by leonidkorolev
Скуль работает по принципу сохранения всех транзакций. Т.е. пока лог не забэкапил, данные а логе не чистятся
#36 by val
Вынужден извиниться. Попробовал, работает. В самом деле полный бекап не прерывает цепочку логов.
#37 by drdroid
Огромное спасибо, все получилось, очень рад что на мисте еще остались специалисты которые пишут кратко и по делу =).
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С