Оригинальный материал
1. Создаем новую базу с таким же именем и такимиже по именам и расположению .mdf и .ldf файлами
2. Останавливаем сервер, подменяем файл .mdf
3. Стартуем сервер, не обращаем внимания на статус базы
4. Из QA выполняем скрипт
Use master go sp_configure 'allow updates', 1 reconfigure with override go
4.Там же выполняем
update sysdatabases set status= 32768 where name = '<db_name>'
5. Перезапускаем SQL Server
6. В принципе база должна быть видна (в emergency mode). Можно, например, заскриптовать все объекты. Заходим в EM, выбираем базу, снимаем галку Restricted access в свойствах базы.
7. Из QA выполняем
DBCC REBUILD_LOG('<db_name>', '<имя нового лога с указанием полного пути>') SQL Server скажет - Warning: The log for database '<db_name>' has been rebuilt.
8. Если все нормально, то там же выполняем
Use master go sp_dboption '<db_name>', 'single_user', 'true' go USE <db_name> GO DBCC CHECKDB('<db_name>', REPAIR_ALLOW_DATA_LOSS) go
9. Если все в порядке, то
sp_dboption '<db_name>', 'single_user', 'false' go Use master go sp_configure 'allow updates', 0 go |