Упала база, на сервере, как восстановить? #136398


#0 by vvv29
Сервер на котором лежала база(SQL), неожиданно ушел в перезагрузку, при запуске сервера пользователи не могут подключиться к базе, выдается ошибка "база не обнаружена". В энтерпрайз манагер SQL, база показана серым цветом и рядом с наименованием в скобках написано(Suspect)Внутри НИЧЕГО НЕТ !!! (No items). ПЛИЗ, какие действия предпринять, что бы не осложнить ситуацию?
#1 by Парижская фанера
Читать пробывал? Сами файлы базы на месте? Архив сделай.
#2 by vvv29
Файлы базы *.mdf и *.ldf на месте, сейчас их скопировал. Архив ведется, каждую ночь но если с него восстанавливать будут утеряны данные за пол дня (25 пользователей)около сотни доков. Пользователей отключл, СКЛ сервер остановил, что дальше делать пока не знаю
#3 by Парижская фанера
Попробуй из вывести из suspect, читать что-то типа этого: ЗЫ Яндекс знает про suspect
#4 by vvv29
Создал новую базу, как приаттачить файлы старой? При остановленом скл подменил файлы новой базы, на файлы старой, новая база тоже стала suspect
#5 by Просто Миша
Стал восстанавливать как указано в ссылке, дошол до 6 го пункта, база перешла в режим emergency mode. выполнение DBCC REBUILD_LOG('MagBase', 'c:sqldataMSSQLdataBase_Log.LDF') --SQL приводит к ошибке Server: Msg 5025, Level 16, State 1, Line 1 The file 'D:Microsoft SQL ServerMSSQLDatasklad_log.LDF' already exists. It should be renamed or deleted so that a new log file can be created. DBCC execution completed. If DBCC printed error messages, contact your system administrator. Имя базы, и пути к файлу лога указаны правильно Подскажите плиз, что ещще можно сделать? Вешаться и пить яд не предлагать.
#6 by Просто Миша
Ну подскажите плиз, если база в emergency mode, то что это такое и как подключить?
#7 by romix
Бэкап есть? Еще раз его (и базу) забэкапь чтобы случайно не покоцать то что есть. Тренируйся с восстановлениями на другом компе.
#8 by romix
Посмотри еще в логи что MS-SQL пишет... Там есть текстовые файлы с логами...
#9 by romix
Описания ошибок удобно искать в Google.
#10 by Просто Миша
Бекап есть, средствами восьмерки, не скл, но бекап ночной, пол дня выпало. Сейчаса на складе затишье, все доки прошли до обеда, отгрузка началась, есть время до утра восстаговить, подскажите что ещще можно попробовать?
#11 by romix
Ну уже нормально (если что, вобьют по печатным докам). Можно попробовать (только сохрани то что от базы осталось!) застопить SQL-сервер, выкинуть (удалить) журнал транзакций sklad_log.LDF запустить SQL-сервер Попробуй комп перегрузить. Попробуй еще поищи ключевые слова. Там хорошая справка. Или в гугле.
#12 by romka-ka
#13 by Просто Миша
По справке с аглицким проблемы. Журнал транзакций удалил. Сервер перегрузил. SQL-запустил, нового файла транзакций не образовалось. База находится в режиме emergency mode. В QA видны таблицы, в EM - ничего нет.
#14 by romix
А если попробовать Detach, положить файлы mdf и ldf в другую папку и сделать Attach?
#15 by romka-ka
какой стоит режим восстановления базы full или simple?
#16 by Просто Миша
14 Пункт меню Detach недоступен :( Удалил базу и Попробовал приаттачить сохраненные файлы выдает ошибку 3624 в описании не описана. 12 из ссылки 8) Если же наоборот, поврежден ldf-файл, но остался *.mdf файл, при подключении база ругается на отсутствие/повреждение лога транзакций. В этом случае можно воспользоваться ХП "sp_attach_single_file_db" Например: use master EXEC sp_attach_single_file_db @dbname = 'sklad', @physname = 'D:Microsoft SQL ServerMSSQLDatasklad.mdf' В ответ Server: Msg 3301, Level 21, State 2, Line 1 Invalid log record found in the transaction log (logop 105). Connection Broken
#17 by Просто Миша
15 режим Full, но в папке бекапа ничего нет,
#18 by romka-ka
16 а ты что файл лог не удалил?
#19 by Просто Миша
Удалял, база была в режиме emergency mode, но при запуске SQL на отсутствие лога не ругался почемуто. А новый файл лога не создавался.Потом добавил из архива файл лога и была выдана ошибка как в 16, сейчас запустил жду результата. Долго наверное ждать придется база 7 гигов с лишним
#20 by romka-ka
удали базу. подсунь ему в папку только mdf файл и процедуру sp_attach_single_file_db. Должно помочь.
#21 by romix
А на другом компе еще попробуй восстановиться...
#22 by Просто Миша
20 Правильно ли так? 1-удалить базу 2- создать новую базу в новом каталоге 3- удалить оба файла новой базы 4- скопировать старый файл mdf с именем нового в новый каталог 5- запустить QA и выполнить EXEC sp_attach_single_file_db @dbname = 'имя новой базы ', @physname = 'ПутьИмя нового Файла.mdf'
#23 by romka-ka
не совсем 1-удалить базу файлы (базы удалятся автоматом).поэтому файлы заранее нужно скопировать в строну, при остановленном скул сервере. 2- скопировать старый файл mdf с тем же именем в тот же каталог (можно новое имя и новый каталог). 3- EXEC sp_attach_single_file_db @dbname = 'имя новой базы (можно и старое)', @physname = 'ПутьИмя нового Файла.mdf (можно старое)'
#24 by Просто Миша
20- Удалил базу оставил в старом каталоге один файл mdf запустил процедуру в ответ Server: Msg 1813, Level 16, State 2, Line 1 Could not open new database 'sklad'. CREATE DATABASE is aborted. Device activation error. The physical file name 'd:Microsoft SQL ServerMSSQLdatasklad_log.LDF' may be incorrect.
#25 by Просто Миша
21- копирую базу на другой комп, как там ее подключать правильно? Приатачить? для приатачивания достаточно одного файла данных или надо ещще и лог?
#26 by romka-ka
одного mdf. лог он сам сделает
#27 by Просто Миша
Копирование скоро закончится, попробую на новом компе(там ещщ один SQL)Следующее В новом каталоге переименовываю старый файл mdf Запускаю EXEC sp_attach_single_file_db @dbname = 'НовоеИмя', @physname = 'Путьновое имя.mdf' Вопрос: Имя базы должно совпадать с именем файла mdf?
#28 by romix
Если база большая, то тренируйся на маленьких базах, которые идут в комплекте.
#29 by romix
+28 На базе NorthWind например.
#30 by Просто Миша
Запустил на другом компе, с другой папки под другим именем,один только файл mdf В ответ пишет Could not open new database 'ssssss'. CREATE DATABASE is aborted. Device activation error. The physical file name 'd:Microsoft SQL ServerMSSQLdatasklad_log.LDF' may be incorrect. то есть он все равно пытаеться найти старый файл лога, и без старого файла лога отказывается создавать базу
#31 by Просто Миша
а когда подсунул старый файл лога, выдал что то новое Server: Msg 3624, Level 20, State 1, Line 1 Location:     recovery.c:2014 Что это такое?
#32 by DimG
Капец это. Пусть заново вбивают, быстрее будет.
#33 by romka-ka
упс. обшибся. Все пути и имена нужно оставить старые. Пути должны существовать.
#34 by vde69
Попробуй ресторить сначалос бекапа, ПОТОМ с файла логов
#35 by Просто Миша
В общем получается EXEC sp_attach_single_file_db @dbname = 'ИмяБазы', Без файла лога нового лога не создает А со старым выдало ещще вот такой результат Server: Msg 3301, Level 21, State 2, Line 1 Invalid log record found in the transaction log (logop 232).
#36 by vde69
Еще раз: МОЖНО попробовать ресторить (последние записи) из старого файла логов
#37 by romka-ka
еще раз все пути нужно оставить прежними. лог файл не нужен.
#38 by Просто Миша
34 - бекап есть, но в нем пол дня доков нет, бекап средствами 8-ки(база данных) Если я ее восстановлю, то уже врядли наверное можно дополнить средствами SQL недостающие данные?
#39 by vde69
38 - можно, только геморно, надо файл лога усечь до времени бекапа
#40 by Просто Миша
36- Бекап ведется только средствами 8-ки (есть база с прошлого дня). 37 - Оставлял пути все прежние, лог удалял, ищщет его и без него не хочет подключать базу.
#41 by vde69
40 - Лог (SQL-евский) дожен быть (его не может не быть!!!) от старой базы, или он не читаеться??? Процедура востановления такая (привожу для 7.7, для 8 не разу не востанавливал, но думаю та-же, если нет то не сильно не бейте :) ), 1. Заводишь пользователя в SQL (например 1c_dbo) ему даешь права админа 2. Конектишся к SQL от его имени (ОБЯЗАТЕЛЬНО!!!!!!!) 3. создаешь пустую базу (например 1с) 4. ДИСКОНЕКТ!!!!!!! 5. В конфигураторе (сервере 1с) указываешь параметры базы и прочее + сохраняешь 6. В конфигураторе -> загрузить данные (подсовываешь свой бекап) 7. Выходишь из 1с 8. Конектишся к SQL от имени 1c_dbo и ресторишь из файла лога с момента бекапа до конца (только в том случае если убитая база имела модель фулл) 9. Правишь права 1c_dbo 10. ДИСКОНЕКТ!!!!!
#42 by Просто Миша
До пункта 8 вроде все ясно. Делал уже, только не совсем с правами понятно. Я пустую базу и загрузку данных в нее и так могу создать. Не ясно, как дальше, по пункту 8 (база фулл) добавить недостающее, если можно подробнее с этого места плиз. А именно как _с_момента_бекапа_ как этот самый момент определить?
#43 by Просто Миша
41 - Восстановил базу из бекапа. База Фулл. Имеются mdf и ldf файлы на момент краха, как теперь добавить недостающее из файла лога? В ЕМ restore database пункт first baskup to restore не доступен. Может надо подсунуть файл транзакций сейчас, взамен восстановленного? плиз
#44 by Просто Миша
Нет, ни чего не получилось. Придется недостающщие доки ручками вбивать.
#45 by vde69
42 - в данном случае файл лога ldf содержит все SQL команды к базе, соответственно если их выполнить, то база востановиться, единственная заморочка это выделить те команды которые нужны (а файл, ОГРОМНЫЙ) Если ты не СПЕЦИАЛИСТ в SQL запросах то лучше не пытаться. (можешь попробовать в него влезьть и посмотреть) Единственное можно попробовать обмануть (но сам не пробовал) устанавливаешь на серваке дату и время последнего бекапа, востанавливаешь ее, далее restore log file, в теории он должен сам все востановить
#46 by Просто Миша
Ок, только поздно уже, сегодня пришлось пользователям с 6-ти утра недостающие доки вбивать. Я вот на будущее хочу спросить, у меня каждую ночь, средствами 8ки делается архив базы.Занимает это дело чде то часа полтора. Днем у операторов есть перерыв пол часа - 40 минут. Средствами SQL можно делать разностную копию которая делается (как написано в книге) быстрее чем полная копия.Вот если я днем в перерыв буду делать эту разностную копию, смогу я ее накатать потом на плный архив сделанный средствами 8-ки? или же и полный архив тоже надо делать средствами SQL?
#47 by vde69
Я рекомендую делать бекап средствами SQL настраиваетья в Job 1. ежедневный бекап 2. переодический бекап (например 1 раз в месяц) 3. бекап логов (вещь полезная не только для востановления данных, но и как средстро уменьшения размера лога на диске), переодичность как в п.2 (делаеться ДО П2) Тогда можно востановить базу средствами SQL до момента краха (если выжил файл логов) востанавливаем бекап п2 и ресторим файл логов (он уже усечен до момента бекапа), или на момент ежедневного бекапа (если файл логов не выжил)
#48 by Просто Миша
47 спасибо, займусь более тщательной настройкой резервного копирования. Вещь весьма полезная, (когда прижмет).
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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