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

Откуда:
Сообщений: 176
Попытался перевести базу на новый чуть более мощный сервер. Из-за аппаратного сбоя, после дня работы, сервер лег, убив базу (переведена в состояние suspect). Базу удалось вывести из этого состояния, но при работе начала выдаваться ошибка:

Ошибка при попытке выборки логической страницы (1:3314010) в базе данных 5. Она принадлежит единице распределения 72057595371192320, а не 72057595189198848.

База была повреждена примерно 9:00 утра, а 5:00 в нее были добавлены важные данные, которые нежелательно потерять.
Имется копия первоначально поврежденной базы, резервной копии перед переводом, был сделан бекап лога поврежденной базы.
Есть ли возможность восстановить работоспосбность базы, не поеряв при этом нужную информацию?
19 сен 09, 08:30    [7682374]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
Igor Glushaev
Member

Откуда:
Сообщений: 176
Да, DBCC dbcheck с опцией rebuild не помогает, бекап сделан на другом сервере до переноса, перенос делался детачем базы и копированием на новый сервер, с последующим аттачем.
19 сен 09, 08:36    [7682379]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
Denis Reznik
Member

Откуда: Киев
Сообщений: 156
Попробуйте восстановить полный бэкап базы (до повреждения) и потом восстановить лог до определённого момента времени. Но это всё имеет смысл, только если у вас стояла полная модель восстановления для базы данных.
19 сен 09, 14:00    [7682599]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
Denis Reznik
Member

Откуда: Киев
Сообщений: 156
Да, забыл, можно ещё попробовать восстановить только повреждённую страницу данных - http://msdn.microsoft.com/ru-ru/library/ms175168.aspx
19 сен 09, 14:10    [7682618]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
Igor Glushaev
Member

Откуда:
Сообщений: 176
Denis Reznik,
Итак:

Восстанавливаю полный бекап базы, восстанавливаю последний дифф. Пытаюсь накатить на нее хвост лога транзакций, с указанием момента времени до которого мне нужно восстановиться (до сбоя). В ответ выдается ошибка:

Сообщение 3456, уровень 16, состояние 1, строка 1
Невозможно повторить запись журнала (38020:3376:1) для идентификатора транзакции (0:69133405) на странице (1:3256742) базы данных "phbk_sql" (идентификатор базы данных - 10). Страница: номер LSN = (37829:17418:226), тип = 1. Журнал: OpCode = 3, контекст 2, PrevPageLSN: (38020:3256:271). Восстановите базу данных из резервной копии или исправьте базу данных.
Сообщение 9004, уровень 16, состояние 6, строка 1
Произошла ошибка во время обработки журнала для базы данных "phbk_sql". Если возможно, восстановите из резервной копии. Если резервная копия недоступна, возможно, понадобится перестроить журнал.
Сообщение 3013, уровень 16, состояние 1, строка 1
RESTORE LOG прервано с ошибкой.

Что я делаю не так и как это исправить?
21 сен 09, 08:24    [7685156]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Igor Glushaev
Denis Reznik,
Итак:

Восстанавливаю полный бекап базы, восстанавливаю последний дифф. Пытаюсь накатить на нее хвост лога транзакций, с указанием момента времени до которого мне нужно восстановиться (до сбоя). В ответ выдается ошибка:

Извините, а если вы накатываете бакап лога - при чем здесь дифф??
21 сен 09, 11:47    [7686102]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
Igor Glushaev
Member

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

Как это причем? Если я не ошибаюсь, то в бекап лога транзакций пишется информация после последнего полного и дифференциального бекапа базы. По крайне мере так я понял из курса 2780 по MS SQL...
Соответсвенно, я разворачиваю последний бекап, накатываю на него последний дифф, и на полученное накатываю бекап лога транзакций, с указанием момента времени, на котором надо остановиться... Где не прав?
21 сен 09, 14:08    [7687109]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Igor Glushaev
iljy,

Как это причем? Если я не ошибаюсь, то в бекап лога транзакций пишется информация после последнего полного и дифференциального бекапа базы.

Ошибаетесь
21 сен 09, 14:11    [7687122]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
Igor Glushaev
Member

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

Хорошо, пусть ошибаюсь, но ведь не в этом суть...
Если способ победить ошибки о которых я писал выше?

Или забить на нужные данные, восстановить из последнего бекапа что доступно, а остальное садить по новой?

(дело в том, что это центральная база распределенки 1с бухгалтерии. Восстановить всю инфу возможность есть, только это может быть черевато рассогласованием центра и почки, чего сильно хочется избежать, что в свою очередь возможно восстановив эту базу на определенный момент времени). Если с моими начальными данными вердикт будет в морг - значит в морг...
21 сен 09, 21:00    [7689226]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Igor Glushaev,

так не накатывайте диф - и будет вам счастье.
21 сен 09, 21:02    [7689227]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли восстановить?  [new]
Igor Glushaev
Member

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

Спасибо всем, тема закрыта. Быстрее оказалось восстановить с последнего бекапа, и потом перегрузить недастоющие данные с почки.

Кстати, отказ от накатывания диффа результата не дал, выдавалась ошибка аналогичная моему посту выше...
23 сен 09, 09:22    [7695962]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить