Назад | Перейти на главную страницу

Нужна помощь в восстановлении поврежденной базы данных SQL

У меня очень особенный случай, над которым я работал несколько дней. У меня очень большая база данных SQL Server 2008 (около 2 ТБ), содержащая 500 файловых групп для поддержки очень больших секционированных таблиц. Недавно у нас произошел катастрофический сбой на одном из дисков, и мы потеряли несколько файловых групп, и база данных стала недоступной.

Мы делали резервные копии файловых групп ежедневно, но из-за других проблем мы потеряли самую последнюю резервную копию журнала и основной файловой группы. У нас есть резервные копии всех данных, но основная резервная копия файловой группы устарела.

С момента резервного копирования основной файловой группы никаких изменений схемы не происходило, но теперь все lsn не синхронизированы, и мы не можем восстановить данные.

Я перепробовал все, что мог придумать (и перепробовал практически все уловки и взломы, которые я мог использовать в Google), но я все еще оказываюсь в той же точке, где получаю сообщения о том, что файлы для файловой группы x не соответствуют основной файловой группе. Сейчас я пытаюсь отредактировать системные таблицы (у нас есть отдельная временная среда для этого, поэтому мы не беспокоимся о повреждении каких-либо производственных баз данных). Я пробовал обновленные sys.sysdbreg, sys.sysbrickfiles и sys.sysprufiles, чтобы попытаться обмануть SQL, заставив думать, что все файлы находятся в сети, но «Выбрать * из OPENROWSET (TABLE DBPROP, 5)» показывает состояние базы данных, отличное от того, что Я вижу в sys.sysdbreg.

Теперь я думаю, что мне нужно как-то отредактировать заголовки фактических файлов данных, чтобы попытаться выровнять lsn с первичным.

Я ценю любую помощь, которую кто-либо может мне здесь оказать, но, пожалуйста, не отвечайте такими вещами, как «вы не должны редактировать файлы mdf, ndf ....» или «см. Статью msdn ....» и т. Д. сложный экстренный случай, и мне нужен настоящий взлом, чтобы мы могли просто получить данные в этой поврежденной базе данных и экспортировать в новую новую базу данных. Я знаю, что есть способ сделать это, но незнание того, что делают системные функции DBPROP (т. Е. Смотрит ли он на системные таблицы или действительно открывает файл), мешает мне понять, как обмануть SQL, чтобы позволить мне читать эти файлы.

Спасибо за любую помощь.

В твоем будущем я вижу два варианта.

  1. Позвоните в PSS и откройте тикет. Потребуется время, чтобы с ними что-нибудь добраться.
  2. Позвоните в SQLskills (а именно Пол) и посмотрите, что он умеет. Я знаю, что Пол уже успешно возвращал базу данных к жизни с помощью шестнадцатеричного редактора. Пол не из дешевых, но он выполнит свою работу.

Удачи.

Позвоните в службу поддержки Microsoft PSS: подайте заявку в службу поддержки уровня A. Лучше этого не будет. Ожидайте платить. Возможно много.

Мы уже пошли по маршруту PSS, и они были далеко не полезны. Просто дал нам стандартный ответ: «Резервное копирование / восстановление не предназначено для такой работы, и мы не поддерживаем взломы». (Спасибо, MS, очень полезно. Я помню, 12 лет назад у вас была группа в PSS, которая помогала в подобных чрезвычайных ситуациях.)

Я просмотрел блог Пола и нашел некоторую информацию очень полезной, но никакой информации о том, как читать такие элементы, как IAM, GAM, SGAM, непосредственно из файла. Я знаю, что если бы я мог получить эту информацию, я мог бы отредактировать таблицу sys.sysallocunits, чтобы восстановить указатели на страницы данных для всех разделов. Я экспериментирую с инструментом восстановления из Office Recovery, который, кажется, может читать данные, поэтому данные должны быть восстанавливаемыми. Я просто хочу добраться до этого