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

SQL Server 2000 - восстановление .MDF с помощью процедуры sp_attach_single_file_db завершается с ошибкой

Поскольку более одного человека вмешивались в базу данных, мы потеряли файлы журнала транзакций и, как следствие, потеряли базу данных. К счастью, у нас есть файл MDF, который остался совершенно неповрежденным, и мы не беспокоимся о потерянных транзакциях, поскольку это были только транзакции «удаления».

Я провел небольшое исследование и обнаружил, что команда sp_attach_single_file_db в значительной степени предназначена для этого, и сервер sql был отключен до того, как файл был удален. Я использовал эту команду:

EXEC sp_attach_single_file_db @dbname = 'RecoveredDatabase',
@PhysName = 'E:\SQL Data\AerationBasinsTrend_data.mdf'

Где RecoveredDatabase - моя новая база данных, а E: \ SQL DATA \ AerationBasinsTrend_Data.mdf - это физический файл .mdf. Я получаю сообщение об ошибке при запуске. Сервер сообщает об этом:

Сервер: Msg 1813, уровень 16, состояние 2, строка 1

Не удалось открыть новую базу данных RecoveredDatabase. CREATE DATABASE прервано.

Ошибка активации устройства. Физическое имя файла «E: \ SQL Data \ AerationBasinsTrend_Log.LDF» может быть неправильным.

Ошибка активации устройства. Физическое имя файла «C: \ SQL Backup \ TransLog» может быть неправильным.

Насколько мне известно, эта команда должна создать новый файл ldf, если старого нет. Что мне не хватает?

Вы можете попробовать:

  1. Создайте новую базу данных с тем же именем и теми же файлами MDF и LDF.

  2. Остановите sql server и переименуйте существующий MDF в новый, скопируйте исходный MDF в это место и удалите файлы LDF.

  3. Запустить SQL Server

  4. Теперь ваша база данных будет помечена как подозрительная

  5. Обновите системные базы данных, чтобы перейти в аварийный режим. Это не будет использовать файлы журнала при запуске

Sp_configure "allow updates", 1
go
Reconfigure with override
GO
Update sysdatabases set status = 32768 where name = "BadDbName"
go
Sp_configure "allow updates", 0
go
Reconfigure with override
GO
  1. Перезагрузите сервер sql. теперь база данных будет в аварийном режиме

  2. Теперь выполните недокументированный DBCC, чтобы создать файл журнала.

DBCC REBUILD_LOG (dbname, 'c: \ dbname.ldf') - Недокументированный шаг для создания нового файла журнала.

(замените имя базы данных и имя файла журнала в соответствии с вашими требованиями)

  1. Выполнить процедуру sp_resetstatus

  2. Перезапустите SQL-сервер и убедитесь, что база данных находится в оперативном режиме.

Источник