Sql 2008 Не удается восстановить резервную копию БД - что еще я могу сделать? - PullRequest
0 голосов
/ 06 февраля 2009

Я пытаюсь восстановить нашу живую базу данных на нашем устройстве Dev. Чтобы сделать это, я, когда на производство, ЗАДАЧИ -> резервное копирование Db. он создал файл 4Gig. Я сжал это до 2.2 Гиг. загрузите это на мой сервер разработки.

На моем dev-сервере я создаю новую БД (называемую 'xxxxx'), а затем Задачи -> восстановить БД из файла. Я даю ему имя файла .bak, перезаписываю все и перехожу.

Когда он достигает 40%, он терпит неудачу. вот скриншот:

альтернативный текст http://img19.imageshack.us/img19/1/restorefailurejl5.png

Теперь я могу вручную заархивировать файлы .mdf и .log, заархивировать их, загрузить их и затем прикрепить к моему экземпляру sql сервера dev. Я сделал это на самом деле прошлой ночью, чтобы заставить это работать .. так что это сработало.

Но я не уверен, почему не работает метод резервного копирования / восстановления? Я скачал файл .bak несколько раз (на случай, если загрузка была повреждена). я несколько раз пытался заархивировать и сделать резервную копию живого сервера .. но после примерно 5-ти скачиваний файла 2Gig я начинаю раздражаться:)

Я попытался сделать DBCC CHECKDB('live db name', RESTORE_REBUILD), и это сработало нормально, а затем резервное копирование, загрузка, восстановление, сбой.

Моя живая БД - sql2008 x64bit, а мой dev box - x86 (32 бит), поэтому я не уверен, что это проблема. Оба сервера версии 10.0 RTM .

Я не хочу останавливать базу данных, чтобы иметь возможность копировать файлы .mdf / .log (потому что вы не можете получить к ним доступ, когда база данных работает, я считаю) .. именно поэтому я предпочитаю метод резервного копирования / восстановления.

Есть предложения?

ОБНОВЛЕНИЕ 1

Прежде чем я отправил этот вопрос, я сделал DBCC CHECKDB ('xxxxx', RESTORE_REBUILD). Я отметил это в своем первоначальном посте, который я только что выделил для дальнейшего использования.

Когда я получу возможность остановить БД, я опубликую конечные результаты здесь (и сохраню текстовый вывод, если кто-то попросит другую информацию).

ОБНОВЛЕНИЕ 2

Я попытался восстановить резервную копию на фиктивной live db, которую я создал. Ошибка (то же сообщение об ошибке). Я сейчас запускаю DBCC CHECKDB ('LiveDB'). Непосредственно перед этим я остановил службу SQL Server и вручную скопировал резервные копии файлов .mdb и .log.

ОБНОВЛЕНИЕ 3

Это результат DBCC CHECKDB ('LiveDb')

Результаты DBCC для «Адреса» 1689363 строк в 101624 страницах для объекта 'Адреса' Результаты DBCC для 'Thumbnails' There 1197 строк на 30 страницах для объекта «Миниатюры» .. CHECKDB обнаружил 0 ошибок размещения и 0 ошибок согласованности в базе данных Выполнение DBCC «LiveDb» завершено. Если DBCC печатает сообщения об ошибках, контакт Ваш администратор.

хмм :( Есть еще идеи? Должен ли я снова запустить DBCC с RESTORE_REBUILD или каким-нибудь другим магическим аргументом?

Окончательное обновление

Хорошо - это ооочень странно. После запуска CHECK DBCC, а затем создания еще одного полного резервного копирования (с использованием того же сценария sql, который мы использовали для eons), восстановление теперь работает нормально! Я просто не понимаю: (

Похоже, я могу сейчас закрыть работу. Я просто не понимаю: (

Ответы [ 4 ]

2 голосов
/ 06 февраля 2009

Это ВАЖНО, у вас может быть проблема с действующей базой данных.

Вы недавно выполняли DBCC CHECKDB на своем производственном сервере? Если нет, сделайте это в следующем возможном окне обслуживания.

В идеале вы должны выполнить CHECKDB перед тем, как создавать полные резервные копии (хотя и не всегда практично), чтобы проверить, что создаваемые вами резервные копии относятся к базе данных, которая была подтверждена как без проблем.

Пожалуйста, не стесняйтесь задавать дополнительные вопросы. Вы можете связаться со мной напрямую, если вам потребуется дополнительная помощь.

Ура, Джон

0 голосов
/ 06 февраля 2009

Похоже, ваша производственная база данных имеет некоторые повреждения. Запустите DBCC CHECKDB в вашей производственной базе данных и посмотрите, что возвращается.

0 голосов
/ 06 февраля 2009

Сбой восстановления на работающей машине (в другую базу данных)? Если это так, попробуйте запустить DBCC CHECKDB.

0 голосов
/ 06 февраля 2009

Мы делаем то же самое каждое утро.

RESTORE DATABASE Accounts FROM DISK = '\\server\F$\SQL_BACKUP\DB.bak' WITH REPLACE

Это прекрасно работает для нас. Я не уверен, окажет ли влияние x64> x32, я не знал, что данные на разных платформах хранились по-разному. По сути, мы каждую ночь выгружаем нашу живую базу данных, затем процесс на нашем сервере SQL забирает их, а другой процесс отправляет их для резервного копирования на диск.

Команда выше создаст вам новую базу данных и импортирует данные, стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...