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

Восстановление SQL Server 2005 из резервной копии сбой

У меня есть файлы .bak для базы данных проекта, который недавно взяла на себя моя компания.

Мне удалось восстановить несколько файлов .bak, но самый важный из них не работает.

Когда это не удается, я просто получаю общую ошибку и прошу проверить журнал.

Возникает следующая ошибка: Сообщение SQL Server Assertion: File:, line = 1443 Failed Assertion = 'pFile'. Эта ошибка может быть связана со временем. Если ошибка повторяется после повторного выполнения оператора, используйте DBCC CHECKDB для проверки структурной целостности базы данных или перезапустите сервер, чтобы убедиться, что структуры данных в памяти не повреждены.

Я не знаю, как запустить DBCC CHECKDB для файла * .bak.

Любая помощь будет принята с благодарностью. Хотя у меня как разработчика есть опыт работы с SQL, я определенно не администратор базы данных. Так что считай, что я идиот. :)

Спасибо!

Это утверждение происходит потому, что код восстановления считывает страницу из резервной копии, но страница повреждена, а идентификатор файла, указанный в заголовке страницы, не существует в восстанавливаемой базе данных. Он запускается из файла кода под названием bckioreq.cpp (раньше я владел всем этим, когда работал в MS).

Сообщение для запуска DBCC CHECKDB - это общее сообщение, которое в этом случае не применяется.

Я так понимаю, вы восстанавливаете полную резервную копию базы данных, а затем серию других дифференциальных резервных копий и / или резервных копий журналов? Вы восстанавливаете в 2005 году, но восстанавливаете ли вы старую резервную копию?

Это то, что в коде называется розничным утверждением - обойти это абсолютно невозможно - как только код попадает в него, утверждение срабатывает, а восстановление срабатывает. Есть элемент Connect, чтобы сделать это лучше, но он также не исправлен в 2008 году.

Это происходит с полной восстанавливаемой резервной копией или с одной из последующих дифференциальных резервных копий и / или резервных копий журналов? Если полная резервная копия, вы ничего не можете сделать - эта резервная копия - тост. Если есть одна из более поздних резервных копий, вы можете восстановить все до этой резервной копии, но не включая ее.

Боюсь, это в основном ваш ответ.

Итак, как это произошло? (риторический вопрос) Возможно, база данных, для которой была создана резервная копия, была повреждена, или подсистема ввода-вывода испортила резервную копию. Чтобы защититься от этого, вы можете сделать несколько вещей: включить контрольные суммы страниц в базе данных и использовать опцию WITH CHECKSUM для резервных копий. Это добавляет некоторую проверку, чтобы убедиться, что резервная копия не повреждена. Вы также можете проверять свои резервные копии различными способами - ознакомьтесь с моим сообщением в блоге об этом: Важность проверки резервных копий.

Надеюсь это поможет!