How To: Attaching database MDF file without LDF file
Working with MDF files from Book CDs:
—————————————————–
Script:
—————————————————–
sqlcmd -E -o “%CD%\attach.log” -Q “exec master..sp_attach_db ‘ExamplesDB’, [%CD%\ExamplesDB.mdf]” -e
—————————————————–
Error:
—————————————————–
exec master..sp_attach_db ‘ExamplesDB’, [C:\Microsoft Press\SQL Server 2008 Examples\Setup\ExamplesDB.mdf]
File activation failure. The physical file name “C:\Microsoft Press\SQL Server 2008 Examples\Setup\ExamplesDB_log.LDF” may be incorrect.
The log cannot be rebuilt when the primary file is read-only.
Msg 1813, Level 16, State 2, Server SHARP, Line 1
Could not open new database ‘ExamplesDB’. CREATE DATABASE is aborted.
—————————————————–
Solution:
—————————————————–
CHECKDB From Every Angle: EMERGENCY mode repair – the very, very last resort
/* 1. create database with the same name of mdf and ldf 2. shut down slq server 3. swap mdf files */ ALTER DATABASE ExamplesDB SET Emergency GO --DBCC REBUILD_LOG --GO ALTER DATABASE ExamplesDB SET SINGLE_USER; GO DBCC CHECKDB (ExamplesDB, REPAIR_ALLOW_DATA_LOSS) GO ALTER DATABASE ExamplesDB SET MULTI_USER; GO SELECT state_desc FROM sys.databases WHERE name='ExamplesDB';